J'expérimente Apache CXF et j'ai une question sur la partie client.Comment fournir l'adresse de serveur au client de service Web Apache CXF configuré par Spring?
Ci-dessous mon actuelle configuration de printemps du client WS de certains com.example.customerservice.service.CustomerService
:
<jaxws:client
name="com.example.customerservice.service.CustomerServiceClient"
serviceName="customer:CustomerServiceService" endpointName="customer:CustomerServiceEndpoint"
address="http://localhost:8080/CustomerServicePort"
serviceClass="com.example.customerservice.service.CustomerService">
<jaxws:features>
<bean class="org.apache.cxf.feature.LoggingFeature" />
</jaxws:features>
</jaxws:client>
Comme vous le voyez, l'attribut address
est configuré de manière statique. Cela ne me convient pas car je ne connais pas l'URL du serveur à l'avance. De plus, dans certains scénarios, j'aimerais utiliser ce client pour différents services ayant des adresses différentes.
Par conséquent, la configuration statique de l'adresse du serveur dans Spring n'est pas appropriée. Donc ma question est - comment puis-je le rendre dynamique?
- Au moment ma solution est de définir une propriété de système - quelque chose comme
baseUrl
et l'injecter dans la config de printemps en utilisant l'espace réservé de la propriété configurateur. - Une autre possibilité serait de construire simplement le client manuellement que je n'aime pas non plus.
Mais je crois qu'il me manque vraiment quelque chose. Peut-être qu'il y a une possibilité de quelque chose comme clientFactory.createClientFor("http://myserver:8080")
?
Salut David, oui, merci, je l'ai vu. Je l'essaie aujourd'hui et je fais rapport. – lexicore
J'ai finalement opté pour la création par programmation via jaxWsProxyFactoryBean: final JaxWsProxyFactoryBean jaxWsProxyFactoryBean = new JaxWsProxyFactoryBean(); jaxWsProxyFactoryBean.setServiceClass (CustomerService.class); jaxWsProxyFactoryBean.setAddress (webAppEnvironment.getBaseUrl() \t \t \t + "/ CustomerServicePort"); Voici trois lignes de code. Assez pour mes fins en ce moment. – lexicore