Sto sperimentando con Apache CXF e ho una domanda sulla parte client.Come fornire l'indirizzo del server al client del servizio Web basato su Apache CXF configurato in Spring?
Qui di seguito è la mia configurazione di Spring corrente del client WS di qualche 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>
Come si vede, l'attributo address
è configurato staticamente. Questo non è adatto per me perché non conosco l'URL del server in anticipo. Inoltre, in determinati scenari mi piacerebbe utilizzare questo client per servizi diversi che hanno indirizzi diversi.
configurazione Pertanto statico l'indirizzo del server in primavera non è appropriato. Quindi la mia domanda è: come posso renderlo dinamico?
- Al momento la mia soluzione è quella di impostare una proprietà di sistema - qualcosa come
baseUrl
e iniettarlo nel config primavera con il configuratore di proprietà segnaposto. - Un'altra possibilità sarebbe semplicemente quella di costruire manualmente il client che non mi piace davvero.
ma credo che sono davvero manca qualcosa. Forse c'è la possibilità di qualcosa come clientFactory.createClientFor("http://myserver:8080")
?
Ciao David, sì, grazie, l'ho visto. Ci sto provando oggi e riferisco. – lexicore
Ho finalmente optato per la creazione programmatica tramite jaxWsProxyFactoryBean: finale JaxWsProxyFactoryBean jaxWsProxyFactoryBean = new JaxWsProxyFactoryBean(); jaxWsProxyFactoryBean.setServiceClass (CustomerService.class); jaxWsProxyFactoryBean.setAddress (webAppEnvironment.getBaseUrl() \t \t \t + "/ CustomerServicePort"); Questo è, tre righe di codice. Abbastanza per i miei scopi al momento. – lexicore