1.在项目的pom.xml文件中拷入cxf的依赖
<!-- 5.CXF -->
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-frontend-jaxws</artifactId>
<version>3.0.5</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-transports-http</artifactId>
<version>3.0.5</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-ws-security</artifactId>
<version>3.0.5</version>
</dependency>
<dependency>
<groupId>org.apache.ws.security</groupId>
<artifactId>wss4j</artifactId>
<version>1.5.2</version>
</dependency>
2.将发布的接口类拷入项目下(UserService注意要在接口上加@WebService注解如果不加则会抛出异常:Exception in thread "main" javax.xml.ws.WebServiceException: Could not find)
3.想办法将UserService的bean交给springIOC容器来管理,即可以用自动注入(@Autowired)的方式来调用
①写一个bean来实现FactoryBean并重写它的三个方法,代码示例:
package com.bean.factory;
import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
import org.springframework.beans.factory.FactoryBean;
public class MyWsServiceFactoryBean<T>implements FactoryBean<T>{
private Stringurl;
private Class<T>t;
@Override
public T getObject()throws Exception {
JaxWsProxyFactoryBean jaxWsProxyFactoryBean = new JaxWsProxyFactoryBean();
jaxWsProxyFactoryBean.setAddress(url);
jaxWsProxyFactoryBean.setServiceClass(t);
T MyService =(T) jaxWsProxyFactoryBean.create();
return MyService;
}
@Override
public Class<?> getObjectType() {
return this.t;
}
@Override
public boolean isSingleton() {
return true;
}
public String getUrl() {
return url;
}
public void setUrl(Stringurl) {
this.url =url;
}
public Class<T> getT() {
return t;
}
public void setT(Class<T>t) {
this.t =t;
}
}
②在spring的配置文件中配置MyWsServiceFactoryBean,示例代码如下:
1)先配置一个xxx.properties的文件,内容如下:
ws_url=http://localhost:8080/mall_0417_user_student/user?wsdl
ws_t=com.service.UserService
2)将文件配置在spring的配置文件中
<context:property-placeholder location="classpath:ws.properties" />
3)配置MyWsServiceFactoryBean
<bean class="com.bean.factory.MyWsServiceFactoryBean">
<property name="url" value="${ws_url}"/>
<property name="t" value="${ws_t}"/>
</bean>
③此时就可以在相应的Controller层去注入UserService(@Autowired)
然后调用该接口中相应的方法