2

我是java新手,所以请原谅我的蹩脚问题:)

我正在尝试在 Java NetBeans 6.1 中构建 Web 服务,但我在配置参数方面遇到了一些问题(例如 .net 中的 .settings)。

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

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

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

谢谢

4

4 回答 4

4

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

不,使用开箱即用的设备不容易做到这一点。Web 服务系统 (JAX-WS) 对 Servlet 引擎 (Tomcat) 的认识极少。它们被设计为隔离的。

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

正如 Lars 所提到的,Properties API 或 JNDI 是您最好的选择,因为它们包含在 Java 中,并且是相当知名的检索选项的方法。使用 Classloader.getResource() 在 Web 上下文中检索属性。

于 2008-09-24T15:04:34.730 回答
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 的“init”方法。

另一种方法是读取系统的环境变量

System.getProperty(String name);

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

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

最后,我相信在开发现代 Web 服务应用程序时,使用 JNDI 查找配置非常普遍,Netbeans 和应用程序容器对此提供了很好的支持。去谷歌上查询。

于 2008-09-24T08:03:35.617 回答
1
MessageContext ctx = MessageContext.getCurrentThreadsContext();       
Servlet wsServlet = (Servlet) ctx.getProperty(HTTPConstants.MC_HTTP_SERVLET);         
ServletConfig wsServletConfig = wsServlet.getServletConfig();                 
ServletContext wsContext = wsServletConfig.getServletContext();   
于 2011-10-12T05:50:52.120 回答
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

于 2013-06-20T09:12:54.863 回答