【发布时间】:2017-10-04 05:19:22
【问题描述】:
我需要隐藏 WSDL url 或仅将其提供给经过身份验证的用户。即我不想暴露http://localhost:8080/services/Application?wsdl。
Tomcat 版本 8.5.11、java 8、Axis 1.4(我知道 Axis 版本太旧,但这是我现在必须使用的)
我想我可以向 web.xml 添加一个安全约束,如http://docs.oracle.com/cd/E19798-01/821-1841/bncbk/index.html 中所述,如下所示:
<security-constraint>
<web-resource-collection>
<web-resource-name>WSDL</web-resource-name>
<description>WSDL Files</description>
<url-pattern>*?wsdl</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>*</role-name>
</auth-constraint>
</security-constraint>
还发现这个帖子建议做同样的事情但对我不起作用Hiding WSDL in JAX-WS
Tomcat 抛出以下错误:
org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[]]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:167)
at org.apache.catalina.core.StandardContext.reload(StandardContext.java:3782)
at org.apache.catalina.startup.HostConfig.reload(HostConfig.java:1377)
at org.apache.catalina.startup.HostConfig.checkResources(HostConfig.java:1350)
at org.apache.catalina.startup.HostConfig.check(HostConfig.java:1586)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:280)
at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:94)
at org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java:1164)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1388)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1392)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1360)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.IllegalArgumentException: Invalid <url-pattern> *?wsdl in security constraint
at org.apache.catalina.core.StandardContext.addConstraint(StandardContext.java:2827)
at org.apache.catalina.startup.ContextConfig.configureContext(ContextConfig.java:1317)
at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1190)
at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:775)
at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:299)
at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:94)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5087)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
... 11 more
知道我做错了什么吗?或者我如何才能实现上述目标?
在此先感谢
【问题讨论】:
-
这是一个错误的模式
<url-pattern>*?wsdl</url-pattern>,改用这个<url-pattern>*.wsdl</url-pattern>,你的异常就会消失。 -
查看here 了解有效的 URL 模式。
-
我同意 *.wsdl 将摆脱异常,但它不会解决问题。我在 URL 的末尾有 ?wsdl 而不是 .wsdl。
标签: java web-services tomcat wsdl axis