我在这样的服务器上查找端点的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()}"
。看起来不那么干净。有什么建议吗?
答案 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查找,你的代码看起来很干净。