【发布时间】:2012-10-26 02:46:05
【问题描述】:
如何让我的 Web 服务客户端(在 Web 应用程序中)使用 web.xml 文件来获取 wsdl 的源代码?
我正在使用 netbeans 6.9 和 tomcat,到目前为止,我们的 Web 应用程序中有一个带有 wsdl url 的 Web 服务引用。
【问题讨论】:
标签: web-services tomcat netbeans web.xml
如何让我的 Web 服务客户端(在 Web 应用程序中)使用 web.xml 文件来获取 wsdl 的源代码?
我正在使用 netbeans 6.9 和 tomcat,到目前为止,我们的 Web 应用程序中有一个带有 wsdl url 的 Web 服务引用。
【问题讨论】:
标签: web-services tomcat netbeans web.xml
我不建议将此类资源存储在web.xml 中,因为它们将来可以更改。例如如果在http://theaddress:8080/webapp?wsdl 中部署的Web 服务将被迁移到其他一些服务器并且URL 将会改变。然后你必须修改你的应用程序,在这种情况下它不是很有效的方法。
我建议JNDI 存储这样的资源。阅读Tomcat中的how to do this,设置起来并不难。
替代方法是使用.properties 文件,但我宁愿选择JNDI 而不是.properties。
【讨论】:
如果必须是 web.xml,你可以配置一个上下文参数(和其他参数一样),如:
<context-param>
<param-name>webservice.Location</param-name>
<param-value>http://theaddress:8080/webapp?wsdl</param-value>
</context-param>
如上配置后(Webservice.Location)是一个任意变量名,您可以根据需要进行更改。如果您没有使用任何附加的 Web 应用程序层,例如 JSF 或 Struts 等,您现在可以像在 servlet 中那样引用这个变量(来自 HttpServletRequest 对象)
String webServiceAddr = request.getServletContext().getInitParameter("webservice.Location"); //getServletContext() will give you an instance to a ServletContext object which basically is a representation of your entire web application deployment environment including configuration files.
变量 webServiceAddr 现在将包含配置的值
我建议您将这样的配置外部化到标准的.properties 文件中,因为部署人员在尝试设置它时在您的 web.xml 中处理其他配置有点冒险。这也是应用程序配置管理的最佳实践。属性文件小教程here
【讨论】: