在一个典型的J2EE项目中,我们将应用程序级别的初始参数放在web.xml的context-param标记中,例如数据库配置,管理员的电子邮件地址等。
内的值 元素可以这样访问:
String value =
getServletContext().getInitParameter("name_of_context_initialization_parameter");
在处理Web Service时,也会出现相同的问题。
如果我们想将数据库配置信息放入配置文件中,然后让Web服务访问它,该怎么办?我们希望配置信息不是硬编码的,因此可以在部署阶段进行更改。
对我们来说幸运的是,Servlet上下文也可以由Web Service访问。JAX-WS可以通过消息上下文来使用Servlet上下文,可以使用Web服务上下文来检索它。插入以下成员将使JAX-WS将对Web服务上下文的引用注入到您的Web服务中:
@Resource
private WebServiceContext context;
然后,您可以使用以下命令访问servlet上下文:
ServletContext servletContext =
(ServletContext) context.getMessageContext().get(MessageContext.SERVLET_CONTEXT);