java如何實現webservice中wsdlLocation訪問地址的可配置化

背景:項目中調用了別的系統的webservice接口,調用成功以後發現wsdlLocation的地址是寫死的,不方便修改,因此須要實現地址,包括用戶名密碼的可配置。項目的框架是Spring,調用webservice使用的是CXF。java

實現可配置步驟:web

step1:在spring的配置文件中加入以下配置spring

<!-- @value 配置資源文件 -->
<bean id="configProperties" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
<property name="locations">
<list>
<value>classpath:resources.properties</value>
</list>
</property>
</bean>

<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PreferencesPlaceholderConfigurer">
<property name="properties" ref="configProperties"/>
</bean>
上面的配置能夠將字符串中的"${name}",轉換爲name在resource.property中設置的值。
step2:使用CXF將wsdl解析爲java代碼,而且使用佔位符"${name}"替換service文件中wsdlLocation和其餘使用的地址的地方。如框架

@WebServiceClient(name = "XXXXXX",
wsdlLocation = "${ADDRESS}",
targetNamespace = "urn:sap-com:document:sap:soap:functions:mc-style")
public class XXXXXXX_Service extends Service {spa

step3:使用CXF來調用webservice,首先須要將resource.property中的值注入到bean中,而後使用CXF來調用,以下
@Value("${UserName}")
private String UserName;
@Value("${Password}")
private String PassWord;
@Value("${ADDRESS}")
private String Address;
JaxWsProxyFactoryBean bean=new JaxWsProxyFactoryBean();
bean.setAddress(Address);
bean.setServiceClass(Service_Interface.class);
bean.setUsername(UserName);
bean.setPassword(PassWord);
Service_Interface port=(Service_Interface) bean.create();//獲得service。
port.method();//調用service的方法
如今代碼中就能夠直接使用resource.property中配置的地址和用戶名密碼了.net

---------------------
轉自:https://blog.csdn.net/u012000209/article/details/55202721

blog

相關文章
相關標籤/搜索