【问题标题】:What happens to all the hard-coded URIs when I move a Web Service?当我移动 Web 服务时,所有硬编码的 URI 会发生什么情况?
【发布时间】:2009-05-05 11:41:06
【问题描述】:

我正在使用 JAX-WS 开发一个测试 WS,并且该演示工作正常,但如果我尝试将它移到生产环境中,我的代码上会出现很多测试环境的 URL。例如:

com.mycompany.testserver.ws.writer.WriterInterface service = new com.mycompany.testserver.ws.writer.WriterInterface();

QName portQName = new QName("http://testserver.mycompany.com/ws/writer.php", "WriterInterfacePort");

String req = "SOME_XML_HERE";

try { // Call Web Service Operation

    Dispatch<Source> sourceDispatch = null;
    sourceDispatch = service.createDispatch(portQName, Source.class, Service.Mode.PAYLOAD);
    Source result = sourceDispatch.invoke(new StreamSource(new StringReader(req)));
} catch (Exception ex) [
//do stuff here
}

移动此类应用的最佳做法是什么?

【问题讨论】:

    标签: java web-services wsdl migration jax-ws


    【解决方案1】:

    从配置文件中读取连接 URL。您可能还希望拥有一个强类型配置对象,该对象将缓存该值,以便只需要读取一次。然后,当您将应用从测试转移到生产时,您只需要更新配置文件即可。

    【讨论】:

      【解决方案2】:

      最常见的做法是将 URL 存储在配置文件中,而不是硬编码,并为测试和生产设置单独的配置。

      引入集成代理或服务注册中心往往是多余的。

      【讨论】:

        【解决方案3】:

        您确实应该避免将 URL 硬编码到代码中。有多种方法可以避免这种情况。即使您没有可用的配置文件功能,您至少应该将此数据存储在每个声明它的类顶部的字符串中。

        无需告诉您(但我想我是)您现在遇到了为什么您从未对 URL/配置数据进行硬编码的原因。

        【讨论】:

          猜你喜欢
          • 2019-07-27
          • 1970-01-01
          • 2014-06-12
          • 2014-04-01
          • 1970-01-01
          • 1970-01-01
          • 2013-08-04
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多