0

我想知道如何在我的 JAX-WS Web 服务中设置系统属性(在服务启动时),以便我可以在任何类中执行 System.getProperty() 来获取它。

4

1 回答 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 回答