CXF动态调用实例
来源:互联网 发布:淘宝儿童舞蹈裤 编辑:程序博客网 时间:2024/06/06 08:52
对于webservice,我个人用CXF比较多,所以下面写个文章教教入门,啰嗦话不多说
先写个对象
package com.shadow.extras.cxf;import java.io.Serializable;import javax.xml.bind.annotation.XmlAccessType;import javax.xml.bind.annotation.XmlAccessorType;@XmlAccessorType(XmlAccessType.FIELD)@SuppressWarnings("serial")public class User implements Serializable {public Integer id;private String username;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}}
然后写服务端接口
package com.shadow.extras.cxf;import javax.jws.WebParam;import javax.jws.WebService;@WebServicepublic interface UserWebService {public User queryUser(@WebParam(name = "user") User user,@WebParam(name = "id") Integer id);public Integer queryCount(@WebParam(name = "count") Integer count);}
接着实现我们刚刚写的接口
package com.shadow.extras.cxf;import javax.jws.WebService;@WebService(endpointInterface = "com.shadow.extras.cxf.UserWebService")public class UserWebServiceImpl implements UserWebService {@Overridepublic User queryUser(User user, Integer id) {System.out.println("当前用户名: " + user.getUsername());System.out.println("id参数: " + id);return user;}@Overridepublic Integer queryCount(Integer count) {return count;}}
上面的步骤完成后就开始配置我们的xml
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jaxws="http://cxf.apache.org/jaxws"xmlns:cxf="http://cxf.apache.org/core"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd"><!--***注意*** 手动添加的内容: xmlns:jaxws="http://cxf.apache.org/jaxws"http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd"--><import resource="classpath:META-INF/cxf/cxf.xml" /><import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" /><import resource="classpath:META-INF/cxf/cxf-servlet.xml" /><bean id="userWebService" class="com.shadow.extras.cxf.UserWebServiceImpl" /><jaxws:endpoint id="queryService" implementor="#userWebService"address="/query" /></beans>
最后就写个main测试效果
package com.shadow.extras.cxf;import java.lang.reflect.Method;import org.apache.cxf.endpoint.Client;import org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory;public class CXFClient {public static void main(String[] args) {JaxWsDynamicClientFactory factory = JaxWsDynamicClientFactory.newInstance();Client client = factory.createClient("http://localhost/services/query?wsdl");Object user = null;try {user = Thread.currentThread().getContextClassLoader().loadClass("com.shadow.extras.cxf.User").newInstance(); // 获取参数对象的实例Method method = user.getClass().getMethod("setUsername", String.class); // 通过方法设置对象的属性值method.invoke(user, "ssss");Object[] result = client.invoke("queryUser", user, 50); // 按照方法的参数来提供值if(result != null && result.length > 0){System.out.println(result[0].getClass().getMethod("getUsername").invoke(result[0])); // 通过getUsername来获取对象的username属性}Object[] result2 = client.invoke("queryCount", 101);if(result2 != null && result2.length > 0){System.out.println(result2[0]); // 基本类型返回就直接输出,或者强转对应类型}} catch (Exception e) {e.printStackTrace();}}}
- CXF动态调用实例
- CXF动态客户端调用webservice实例
- CXF动态客户端调用webservice实例
- CXF动态客户端调用webservice实例
- CXF动态客户端调用webservice实例
- CXF动态客户端调用webservice实例
- CXF动态客户端调用webservice实例 遇到的问题
- cxf动态调用WebService
- CXF客户端动态调用
- CXF客户端(动态调用)
- cxf动态调用WebService
- CXF之动态客户端实例
- CXF之动态客户端实例
- CXF实现WebService动态调用。
- cxf动态调用webservice接口
- android调用web service(cxf)实例
- android调用web service(cxf)实例
- android调用web service(cxf)实例
- 六年谈-1.游戏工作室与游戏开发过程简介
- #pragma
- 图像处理 浮雕效果
- h264检测是I帧还是P帧
- MO_GLOBAL - EBS R12 中 Multi Org 设计的深入研究(1)
- CXF动态调用实例
- Chrome调试(debugger)总是进入paused in debugger状态
- C#中的如何:连接和分割字符串
- asp.net 底层
- VC利用管道读取EXE返回值
- MO_GLOBAL - EBS R12 中 Multi Org 设计的深入研究 (2)
- MO_GLOBAL - EBS R12 中 Multi Org 设计的深入研究 (3)
- magento多域名多店铺域名访问问题
- 在开发中总结的一点小技巧