我想知道如何在我的 JAX-WS Web 服务中设置系统属性(在服务启动时),以便我可以在任何类中执行 System.getProperty() 来获取它。
问问题
950 次
1 回答
0
在 java 进程中使用命令行选项(用于启动应用程序服务器)来设置系统属性值。例如:-Dproperty=value
java -Dbrandon.f="some string" SomeClass
您可以通过以下方式恢复它:
String value = System.getProperty("brandon.f");
更新
如果您想加载配置文件并在 JAX-WS 中使用它,如果您愿意,可以使用侦听器在应用程序上下文中加载它。例如:
@WebListener
public class CacheListener implements ServletContextListener {
public void contextInitialized(ServletContextEvent sce) {
// Bean for store the configuration data.
Map<String, String> map = new HashMap<String, String>();
// Load file and read it.
// Store the bean in application context.
ServletContext context = sce.getServletContext();
context.setAttribute("myconfig", dummyCache);
}
public void contextDestroyed(ServletContextEvent sce) {
ServletContext context = sce.getServletContext();
context.removeAttribute("myconfig");
}
}
获取服务实现中的配置数据:
@WebService
public class Test {
@Resource
private WebServiceContext svcCtx;
@WebMethod(operationName = "testCode")
public String testCode(@WebParam(name = "key") String key) {
MessageContext msgCtx = svcCtx.getMessageContext();
ServletContext ctx = (ServletContext)
msgCtx.get(MessageContext.SERVLET_CONTEXT);
Map<String, String> map = (Map<String, String>)
ctx.getAttribute("myconfig");
return map.get("key");
}
}
于 2013-10-28T15:10:55.460 回答