如何使用JNDI查找在JAX-WS CXF客户端中配置地址

时间:2014-02-01 02:58:15

标签: spring web-services jax-ws cxf spring-el

我在这样的服务器上查找端点的JNDI值(属性文件不是一个选项)

<jee:jndi-lookup id="MyEndpoint" jndi-name="endpoint.url" />

我想在地址处使用上面查找的值。

<jaxws:client id="helloClient"
       serviceClass="demo.spring.HelloWorld"
       address="http://localhost:9002/HelloWorld" />

我试过了address="${MyEndpoint}"。没工作。看起来我必须使用另一个bean,它使用jndi值并使用其方法返回为字符串,即address="#{MyBean.geyMyEndpoint()}"。看起来不那么干净。有什么建议吗?

2 个答案:

答案 0 :(得分:1)

您应该能够使用Spring Expression Language来获得所需的行为,而无需使用其他bean。以下适用于Tomcat 7:

<jee:jndi-lookup id="MyEndpoint" jndi-name="java:comp/env/MyEndpoint" />

<jaxws:client id="helloClient"
       serviceClass="demo.spring.HelloWorld"
       address="#{MyEndpoint}" />

答案 1 :(得分:0)

另外在Spring 3.1的另一个注释中 - Spring统一了物业管理。所以代替上述解决方案,你可以做到这一点

<jaxws:client id="helloClient"  serviceClass="demo.spring.HelloWorld"  address="${endpoint.url}" />

endpoint.url可以是任何属性(系统,环境等),它将自动解析该属性。所以不需要单独进行JNDI查找,你的代码看起来很干净。