Как настроить адрес в клиенте 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, и ваш код выглядит чистым.

Другие вопросы по тегам