当我移动Web服务时,所有硬编码的URI会发生什么?

时间:2009-05-05 11:41:06

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

我正在使用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
}

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

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

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

引入集成代理或服务注册表往往过度。

答案 2 :(得分:0)

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

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