我是新来的Java所以原谅我蹩脚的问题:)Java,NetBean:从Web Service方法访问web.xml上下文参数?
我试图建立在Java中使用NetBeans 6.1 Web服务,但我有一个配置参数一些麻烦(如在.NET .settings)。
在java web服务中保存和访问这些设置的正确方法是什么?
有没有办法在web方法中从web.xml中读取上下文参数?
如果没有什么替代方法来存储配置变量,如路径名?
谢谢
我是新来的Java所以原谅我蹩脚的问题:)Java,NetBean:从Web Service方法访问web.xml上下文参数?
我试图建立在Java中使用NetBeans 6.1 Web服务,但我有一个配置参数一些麻烦(如在.NET .settings)。
在java web服务中保存和访问这些设置的正确方法是什么?
有没有办法在web方法中从web.xml中读取上下文参数?
如果没有什么替代方法来存储配置变量,如路径名?
谢谢
如果您使用servlet,你可以在web.xml配置参数:
<servlet>
<servlet-name>jsp</servlet-name>
<servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
<init-param>
<param-name>fork</param-name>
<param-value>false</param-value>
</init-param>
</servlet>
这些属性将在ServletConfig对象传递给你的servlet的“初始化”方法。
另一种方法是用
System.getProperty(String name);
阅读系统的环境变量,但是,这是不建议除小程序和测试。
如果你想使用“.properties”文件,还有Properties API。 http://java.sun.com/javase/6/docs/api/java/util/Properties.html
最后,我相信在开发现代Web服务应用程序时,使用JNDI查找配置很常见,Netbeans和应用程序容器对此有相当好的支持。去谷歌上查询。
有没有办法在Web方法中从web.xml中读取上下文参数?
不,使用开箱即用并不容易。 Web Service系统(JAX-WS)对Servlet引擎(Tomcat)的了解最少。他们的设计是孤立的。
如果你想使用的上下文参数,您的Web服务类需要实现的ServletContextListener和检索初始化参数所需的参数(或保存供以后使用的上下文中)。由于Servlet引擎和JAX-WS将各自拥有对象的不同情况下,你需要的值保存到静态成员。
至于拉斯提到的,属性API或者JNDI是因为它们可以包含在Java和是相当知名的方式来检索选项你最好的赌注。使用Classloader.getResource()在Web上下文中检索属性。
MessageContext ctx = MessageContext.getCurrentThreadsContext();
Servlet wsServlet = (Servlet) ctx.getProperty(HTTPConstants.MC_HTTP_SERVLET);
ServletConfig wsServletConfig = wsServlet.getServletConfig();
ServletContext wsContext = wsServletConfig.getServletContext();
我认为正确的答案是......一如既往......“这取决于”。如果您只使用一台服务器运行一个小型实现,那么它很大程度上依赖于您要使用的WS技术。有些使servlet上下文和上下文参数易于访问,有些则不会,在这种情况下,从属性文件访问属性可能会更容易。你要拥有的服务器在高流量负载均衡环境中的数组,其中更新所有服务器的设置必须即时和集中套内故障转移的?如果是这种情况,那么你是否真的想更新服务器场中所有服务器的配置文件?如何将这些更改同步到所有这些服务器?这对你有影响吗?如果您要将路径名存储在配置文件中,那么您可能希望能够在某些主机出现故障(“\ file_server_host \ doc_store” - >“\ backup_file_server_host \ doc_store”)时将路径名更新为另一台主机。 )在这种情况下实际上可能更好地使用DNS进行故障转移。变数太多。这真的取决于设计;需要;应用程序的规模。
为了简单起见,如果你只是想那么.settings的简单的等效文件要.properties文件。以下是我最近在项目中使用过的一个示例:https://github.com/sylnsr/docx4j-ws/blob/master/src/docx4j/TextSubstitution.java
请仔细阅读该问题。您应该针对具体问题给出具体的答案:“从Web Service方法访问web.xml上下文参数?”。 不过你给了一些有用的选择。 – Zeemee 2010-08-03 06:24:18
上下文参数!=初始参数(http://www.factorypattern.com/storing-parameters-in-webxml-context-param-init-param/) – 2013-06-20 09:19:38