2008-09-24 66 views
2

我是新来的Java所以原谅我蹩脚的问题:)Java,NetBean:从Web Service方法访问web.xml上下文参数?

我试图建立在Java中使用NetBeans 6.1 Web服务,但我有一个配置参数一些麻烦(如在.NET .settings)。

在java web服务中保存和访问这些设置的正确方法是什么?

有没有办法在web方法中从web.xml中读取上下文参数?

如果没有什么替代方法来存储配置变量,如路径名?

谢谢

回答

3

如果您使用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和应用程序容器对此有相当好的支持。去谷歌上查询。

+1

请仔细阅读该问题。您应该针对具体问题给出具体的答案:“从Web Service方法访问web.xml上下文参数?”。 不过你给了一些有用的选择。 – Zeemee 2010-08-03 06:24:18

+0

上下文参数!=初始参数(http://www.factorypattern.com/storing-parameters-in-webxml-context-param-init-param/) – 2013-06-20 09:19:38

4

有没有办法在Web方法中从web.xml中读取上下文参数?

不,使用开箱即用并不容易。 Web Service系统(JAX-WS)对Servlet引擎(Tomcat)的了解最少。他们的设计是孤立的。

如果你想使用的上下文参数,您的Web服务类需要实现的ServletContextListener和检索初始化参数所需的参数(或保存供以后使用的上下文中)。由于Servlet引擎和JAX-WS将各自拥有对象的不同情况下,你需要的值保存到静态成员。

至于拉斯提到的,属性API或者JNDI是因为它们可以包含在Java和是相当知名的方式来检索选项你最好的赌注。使用Classloader.getResource()在Web上下文中检索属性。

1
MessageContext ctx = MessageContext.getCurrentThreadsContext();  
Servlet wsServlet = (Servlet) ctx.getProperty(HTTPConstants.MC_HTTP_SERVLET);   
ServletConfig wsServletConfig = wsServlet.getServletConfig();     
ServletContext wsContext = wsServletConfig.getServletContext(); 
0

我认为正确的答案是......一如既往......“这取决于”。如果您只使用一台服务器运行一个小型实现,那么它很大程度上依赖于您要使用的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

相关问题