Как настроить адрес в клиенте JAX-WS CXF, используя поиск JNDI
Я ищу свое значение конечной точки 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 ответа
Вы должны иметь возможность использовать 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}" />
Также на другой ноте от Spring 3.1 - Spring имеет унифицированное управление свойствами. поэтому вместо вышеуказанного решения вы можете сделать это
<jaxws:client id="helloClient" serviceClass="demo.spring.HelloWorld" address="${endpoint.url}" />
endpoint.url может быть любым свойством (системой, окружением и т. д.), и оно автоматически разрешит свойство. поэтому нет необходимости делать отдельный поиск JNDI, и ваш код выглядит чистым.