CXF框架简单的JavaBean对象传递进行讲解。
第一步:创建传输的JavaBean对象(UserInfo)
-
package
com.ws.model;
-
-
import
javax.xml.bind.annotation.XmlAccessType;
-
import
javax.xml.bind.annotation.XmlAccessorType;
-
import
javax.xml.bind.annotation.XmlRootElement;
-
import
javax.xml.bind.annotation.XmlType;
-
-
-
@XmlRootElement
(name=
"UserInfo"
)
-
@XmlAccessorType
(XmlAccessType.FIELD)
-
@XmlType
(propOrder={
"userName"
,
"userAge"
})
-
public
class
UserInfo {
-
private
String userName;
-
private
Integer userAge;
-
-
public
UserInfo(String name,Integer age){
-
this
.userAge = age;
-
this
.userName = name;
-
}
-
-
public
UserInfo(){
-
}
-
-
-
-
}
注解:@XmlRootElement-指定XML根元素名称(可选)
@XmlAccessorType-控制属性或方法序列化 , 四种方案:
FIELD-对每个非静态,非瞬变属性JAXB工具自动绑定成XML,除非注明XmlTransient
NONE-不做任何处理
PROPERTY-对具有set/get方法的属性进行绑定,除非注明XmlTransient
PUBLIC_MEMBER -对有set/get方法的属性或具有共公访问权限的属性进行绑定,除非注 明XmlTransient
@XmlType-映射一个类或一个枚举类型成一个XML Schema类型
第二步:创建webservices服务端接口和实现类
1、创建服务端接口类
-
package
com.ws.services;
-
-
import
javax.jws.WebService;
-
import
com.ws.model.UserInfo;
-
-
@WebService
-
public
interface
IUserServices {
-
public
UserInfo getUserInfo(String userName, Integer userAge);
-
}
2、创建服务端接口实现类
-
package
com.ws.services.impl;
-
-
import
javax.jws.WebService;
-
import
com.ws.model.UserInfo;
-
import
com.ws.services.IUserServices;
-
-
@WebService
-
public
class
UserServicesImpl
implements
IUserServices {
-
public
UserInfo getUserInfo(String userName, Integer userAge) {
-
return
new
UserInfo(userName,userAge);
-
}
-
}
3、创建服务端,并发布服务
-
package
com.test;
-
-
import
javax.xml.ws.Endpoint;
-
import
org.apache.cxf.jaxws.JaxWsServerFactoryBean;
-
import
com.ws.services.impl.UserServicesImpl;
-
-
public
class
ServerTest {
-
public
ServerTest(){
-
-
Endpoint.publish("http://localhost:8090/userInfoServices"
,
new
UserServicesImpl());
-
}
-
public
static
void
main(String[] args) {
-
-
new
ServerTest();
-
System.out.println("Server ready..."
);
-
try
{
-
Thread.sleep(1000
*
300
);
-
} catch
(InterruptedException e) {
-
e.printStackTrace();
-
}
-
System.out.println("Server exit..."
);
-
System.exit(0
);
-
}
-
}
第三步:创建webservices客户端,并进行测试(这里只例举在客户端工程中的测试方法)
1、将服务端的JavaBean和Services接口类,copy到客户端工程中,且目录要一致
2、在客户端工程中,新建一个测试类测试
-
package
com.ws.client;
-
-
import
org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
-
import
com.ws.model.UserInfo;
-
import
com.ws.server.IUserServices;
-
-
public
class
UserTest {
-
public
static
void
main(String[] args) {
-
-
JaxWsProxyFactoryBean factory = new
JaxWsProxyFactoryBean();
-
-
factory.setServiceClass(IUserServices.class
);
-
-
factory.setAddress("http://localhost:8090/userInfoServices"
);
-
IUserServices userServices = (IUserServices)factory.create();
-
System.out.println("invoke userinfo webservice..."
);
-
-
UserInfo user = userServices.getUserInfo("vicky"
,
23
);
-
System.out.println("UserName: "
+user.getUserName());
-
System.out.println("UserAge : "
+user.getUserAge());
-
-
System.exit(0
);
-
}
-
}
第四步:运行webServices服务,在IE中输入http://localhost:8090/userInfoServices?wsdl
,验证服务是否成功发布
第四步:运行客户端,验证。
分享到:
相关推荐
**WebService CXF 对象传递详解** 在Web服务领域,CXF是一个非常重要的开源框架,它允许开发者创建和消费各种Web服务。CXF支持SOAP、RESTful等多种通信模式,并且能够处理复杂的对象传递,使得Web服务的数据交换...
SOAP允许开发者将复杂的对象作为参数传递给Web服务,这样服务端可以接收和处理这些参数,实现业务逻辑。这通常涉及到序列化和反序列化的过程,即将Java对象转换为XML格式,以便在网络中传输,然后在接收端再将XML...
下面我们将深入探讨"webservice CXF 服务端客户端传递参数的例子demo"。 1. **CXF框架介绍** CXF是一个Java框架,它允许开发者通过简单的API来创建和使用Web服务。CXF支持多种Web服务标准,如WS-I Basic Profile、...
这里的Interceptor就和Filter、Struts的Interceptor很类似,提供它的主要作用就是为了很好的降低代码的耦合性,提供...参照网址:http://www.cnblogs.com/hoojo/archive/2011/03/30/1999587.html,cxf入门很不错的哦!
本资源"WebService传递对象与集合问题.rar"显然关注的是在Web Service中如何有效地传递复杂数据类型,如对象和集合。 在传统的Web Service中,数据通常通过XML格式进行传输,这是SOAP消息的基础。然而,直接传递...
本示例着重于CXF客户端如何处理对象参数传递以及支持文件的上传和下载,特别是实现了断点续传功能,这在大文件传输时尤为关键。 【对象传参】: CXF允许通过JAXB(Java Architecture for XML Binding)将Java对象...
2. CXF 提供了多种方式来传递复杂类型对象,包括: * 通过 CXF 提供的 DataBinding 机制 * 通过 CXF 提供的 Converter 机制 五、CXF 整合 Spring 1. CXF 提供了多种方式来整合 Spring,包括: * 通过 CXF 提供...
除了简单的数据类型,CXF还支持复杂的对象传递,如List、Map等集合类型。这通常涉及到序列化和反序列化的过程。 在本节中,我们将介绍如何在CXF中传递复杂对象。首先,我们需要定义一个实体类`Demo`,用于存储各种...
通过使用JAXB(Java Architecture for XML Binding),我们可以将Java对象直接转换为XML文档,反之亦然。在服务端,我们可以使用`@WebMethod`注解标记方法作为服务操作,而`@XmlElement`和`@XmlRootElement`等注解...
在这个主题中,我们将深入探讨CXF的Interceptor拦截器、处理复杂类型对象的传递以及如何结合Spring进行集成,最后我们将学习如何使用ANT工具快速构建和部署CXF工程。 1. CXF Interceptor拦截器: 拦截器是CXF框架...
8. **多种数据绑定技术**:CXF支持JAXB、XMLBeans、Aegis等多种数据绑定技术,使XML到Java对象的转换更加便捷。 9. **插件支持**:CXF提供了Maven插件,可以方便地在Maven项目中使用,简化构建流程。 在"apache-...
在IT行业中,Web服务是一...总的来说,结合Spring、CXF和RESTful,我们可以轻松地创建和消费传递复杂对象的Web服务,这在分布式系统和微服务架构中尤其有用。理解并熟练掌握这些技术,对于提升你的IT职业生涯至关重要。
1. **WS-*协议支持**:CXF提供了对Web服务标准如WS-Security(安全性)、WS-ReliableMessaging(可靠消息传递)和WS-Addressing(地址)的支持,使得开发人员能够创建符合这些规范的服务。 2. **JAX-WS和JAX-RS实现...
接下来,我们要讨论的是如何通过CXF传递复杂数据类型,如`List`和`Map`。CXF支持数据绑定,可以自动将Java对象转换为XML消息,反之亦然。在服务接口中,你可以定义接受或返回`List`或`Map`的方法,然后在实现中处理...
- 数据绑定:支持JAXB、XMLBeans、Aegis等多种数据绑定方式,用于对象和XML之间的转换。 - 消息传递:处理消息格式,如SOAP和RESTful。 - 插件架构:允许扩展和自定义CXF的行为。 2. **CXF与Spring的集成:** ...
5. **Spring框架集成**:CXF可以与Spring框架无缝集成,利用Spring的依赖注入特性来管理服务对象。 6. **服务配置**:CXF服务的配置通常通过XML文件完成,例如cxf.xml,其中包含了服务的地址、实现类、绑定信息等。...
在描述中提到的场景,CXF 2.1.3客户端被用来调用XFire 1.2.6服务端的服务,涉及对象的传递和返回。 XFire,后来并入了CXF项目,是一个早期的Java Web服务框架,它同样支持SOAP通信。XFire 1.2.6作为服务端,提供了...
然而,CXF支持XML Schema定义的复杂数据类型,这意味着你可以直接传递和接收Java对象,这极大地简化了服务接口的设计和使用。 最后,CXF与Spring的整合是另一个重要的知识点。Spring是一个广泛使用的Java企业级应用...
总的来说,这个"CXF Webservice Demo"是一个完整的示例,涵盖了从基础的字符串传递到复杂的对象交换,以及与Spring的集成。通过学习和理解这个示例,开发者能够更好地掌握如何在实际项目中使用CXF来创建高效、灵活且...
5. **WS-* Specifications**:CXF支持一系列Web服务增强规范,如WS-Security(安全)、WS-ReliableMessaging(可靠消息传递)和WS-Addressing(地址)等,这些规范提供了更高级的功能和互操作性。 6. **CXF Tools**...