一、服务端项目
1,web.xml中填加
<!-- 配置webservice访问地址 -->
<servlet>
<servlet-name>CXFServlet</servlet-name>
<servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>CXFServlet</servlet-name>
<url-pattern>/webservice/*</url-pattern>
<!-- 访问路径1 -->
</servlet-mapping>
2, 填加spring-cxf-server.xml配置文件
注意事项:该文件中需要修改的地方:
<jaxws:endpoint
id="userService"
implementor="com.jk.cd.service.impl.EmpServiceImpl"
<!-- 服务端访问方法的service的实现类 -->
address="/uerService">
<!-- 访问路径2 -->
</jaxws:endpoint>
3,项目中设置
1:service接口类上填加@Service注解
2:接口方法参数前填加@WebParam(name="参数名")注解
<!--表示该参数必须传递 -->
3,service实现类与正常项目中一样,填加@server注解(!!!!@WebService注解)
4,最终访问路径:https://127.0.0.1:8080/服务端项目名/访问路径1/访问路径2?wsdl
测试访问路径:https://127.0.0.1:8080/服务端项目名/访问路径1/访问路径2
二、工具类生成服务端访问文件
在工具apache-cxf-3.2.4中的bin目录运行cmd,输入以下命令
wsdl2java -p com.jk.cd.service.webService -client http://127.0.0.1:8080/webservice/uerService?wsdl
这是你要把文件放在客户端项目的包路径 这是服务端的最终访问路径
在bin目录下会生成文件,将文件中的webService方件复制到客户端项目中
三、客户端文件
1,添加spring-cxf-client.xml文件
2,注意事项
<bean id="client" class="com.jk.cd.service.webService.EmpService" factory-bean="clientfactory" factory-method="create"/>
<!--调用接口注入时 变量名必须是这个id --> <!--生成文件中的service接口地址 -->
<bean id="clientfactory" class="org.apache.cxf.jaxws.JaxWsProxyFactoryBean">
<property name="serviceClass" value="com.jk.cd.service.webService.EmpService"/>
<!--生成文件中的service接口地址 -->
<!-- 这个address一定要注意,正确的-->
<property name="address" value="http://localhost:8080/webservice/uerService"/>
<!--这是服务端的最终访问路径 -->
</bean>
3,在service实现类或controller实现类中注入生成文件中的接口类,变量名必须为spring-cxf-client.xml文件中<bean>标签中的接口id
四、客户端往服务端传递参数为实体bean时,可以使用BeanUtils.copyProperties(要传递的实体bean变量,目标实体变量)处理;
示例代码
//通过id查询到要传递的实体bean
EmpBean emp2=treeService.queryEmpByid(id);
//新建一个目标实体Bean,为生成文件中的实体bean类型
EmpBeanMongo empBeanMongo = new EmpBeanMongo();
//使用复制工具类将参数Bean转换到生成文件中的bean类型
BeanUtils.copyProperties(emp2,empBeanMongo);
//将转换后的生成方件中类型的bean放到服务端方法的参数中传递
client.addEmp(empBeanMongo);