代码之家  ›  专栏  ›  技术社区  ›  user18834

Java,NetBean:从Web服务方法访问Web.xml上下文参数?

  •  2
  • user18834  · 技术社区  · 16 年前

    我是爪哇人,所以请原谅我跛脚的问题:

    我试图在Java NETBeaS 6.1中构建Web服务,但我对配置参数(如.NET中的设置)有一些麻烦。

    在Java Web服务中保存和访问这些设置的正确方法是什么。

    在web方法中是否有从web.xml读取上下文参数的方法?

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

    谢谢你

    4 回复  |  直到 11 年前
        1
  •  4
  •   James Schek    16 年前

    在web方法中是否有从web.xml读取上下文参数的方法?

    不,用开箱即用是不容易的。web服务系统(jax-ws)对servlet引擎(tomcat)的了解很少。它们被设计成孤立的。

    如果您想使用上下文参数,那么您的web服务类需要实现servletcontextlistener并在初始化参数中检索所需的参数(或者保存上下文以供以后使用)。因为servlet引擎和jax-ws都有对象的不同实例,所以需要将值保存到一个静态成员。

    正如拉尔斯所提到的,属性API或JNDI是您最好的赌注,因为它们包含在Java中,并且是众所周知的检索选项的方法。使用classloader.getResource()检索Web上下文中的属性。

        2
  •  3
  •   Lars Westergren    16 年前

    如果使用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的“init”方法。

    另一种方法是使用

    System.getProperty(String name);
    

    但除了小程序和测试之外,不建议这样做。

    如果您想使用“.properties”文件,还有properties api。 http://java.sun.com/javase/6/docs/api/java/util/Properties.html

    最后,我相信在开发现代web服务应用程序时,使用jndi查找配置是很常见的,netbeans和应用程序容器对此有很好的支持。谷歌IT。

        3
  •  1
  •   dosER_42    13 年前
    MessageContext ctx = MessageContext.getCurrentThreadsContext();       
    Servlet wsServlet = (Servlet) ctx.getProperty(HTTPConstants.MC_HTTP_SERVLET);         
    ServletConfig wsServletConfig = wsServlet.getServletConfig();                 
    ServletContext wsContext = wsServletConfig.getServletContext();   
    
        4
  •  0
  •   Michael M    11 年前

    我想正确的答案是…一如既往……”这取决于”。如果您只是在一个服务器上运行一个小型实现,那么它在很大程度上取决于您要使用的ws技术。有些使servlet上下文和上下文参数易于访问,有些则不易访问,在这种情况下,从属性文件访问属性可能更容易。在高流量的负载平衡环境中,如果发生故障转移,更新所有服务器的设置必须是即时和集中的,您是否要在其中拥有一个服务器阵列?如果是这样,那么您真的要更新服务器场中所有服务器的配置文件吗?如何将这些更改同步到所有这些服务器?这对你重要吗?如果您将路径名存储在配置文件中,那么您可能希望能够在某个主机出现故障时将路径名更新到另一个主机(“\file\u server\u host\doc\u store”->“\backup_file_server_host\doc_store”)在这种情况下,使用DNS进行故障转移实际上可能更好。变量太多。这实际上取决于应用程序的设计、需求、规模。


    为了简单起见,如果您只需要一个简单的.settings文件,那么您需要一个.properties文件。下面是我最近在一个项目中使用的一个示例: https://github.com/sylnsr/docx4j-ws/blob/master/src/docx4j/TextSubstitution.java