webservice一般操作流程

一、服务端项目

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);

猜你喜欢

转载自blog.csdn.net/qq_40597668/article/details/89202200