1.首先介绍环境配置
step 1 : 在eclipse 中新建一下web 项目
并导入xfire 对应的依赖*.jar 包文件
step 2 : 在java src 目录下新建文件夹src/META-INF/xfire
和文件services.xml 内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<beans>
<service xmlns="http://xfire.codehaus.org/config/1.0">
<!--name>HelloWorldWebServiceConfigName</name>
<namespace>
http://127.0.0.1/usf/HelloService
</namespace>
<serviceClass>
com.webservice.helloworld.HelloWorldWebServiceTest
</serviceClass>
<implementationClass>
com.webservice.helloworld.imp.HelloWorldWebServiceImpl
</implementationClass-->
<!--对应的WebService 实类名称-->
<serviceClass>com.vms.cmn.dao.impl.UserDaoImpl</serviceClass>
</service>
</beans>
step 3 : 配置web.xml 配置一个XFireConfigurableServlet 内容如下
如果不记得对应类路径可以去xfire-all-1.2.6.jar 包中找对应的 传输http XFire 配置Servlet 文件
<servlet>
<servlet-name>XfireWebService</servlet-name>
<servlet-class>org.codehaus.xfire.transport.http.XFireConfigurableServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>XfireWebService</servlet-name>
<url-pattern>/XfireWebService/WebService/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>XfireWebService</servlet-name>
<url-pattern>/WebService/*</url-pattern>
</servlet-mapping>
2. 1 webservice 例子介绍
服务端开发
step 1 :定义一个对象
package com.vms.cmn;
import java.io.Serializable;
public class UserInfo implements Serializable{
/**
*
*/
private static final long serialVersionUID = 1L;
private Integer id;
private String name;
private String sex;
private int age;
public UserInfo() {
super();
}
public UserInfo(Integer id, String name, String sex, int age) {
super();
this.id = id;
this.name = name;
this.sex = sex;
this.age = age;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
step 2 :定义一个接口 对应的操作方法 这里我们使用元注解的方式
package com.vms.cmn.dao;
import java.util.Collection;
import javax.jws.WebService;
import com.vms.cmn.UserInfo;
@WebService
public interface IUserDao {
public void insert(UserInfo userInfo);
public void update(UserInfo userInfo);
public Collection<UserInfo> getAll();
}
step 3 :定义接口实现类,这里我们才用spring 的思想接口编程理念
package com.vms.cmn.dao.impl;
import java.util.ArrayList;
import java.util.Collection;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebResult;
import javax.jws.WebService;
import com.vms.cmn.UserInfo;
import com.vms.cmn.dao.IUserDao;
@WebService
public class UserDaoImpl implements IUserDao {
Collection<UserInfo> userInfoes = new ArrayList<UserInfo>();
public UserDaoImpl() {
for(int i = 0 ; i < 8; i++) {
UserInfo userInfo = new UserInfo(i,"liuqing" + i,i % 2 == 0? "male":"wo",22 + i);
userInfoes.add(userInfo);
}
}
@WebMethod
@WebResult(name="userInfoes")
public Collection<UserInfo> getAll() {
return this.userInfoes;
}
@WebMethod
@Override
public void insert(@WebParam(name="UserInfo" , header=true)UserInfo userInfo) {
authorize(userInfo);
this.userInfoes.add(userInfo);
}
@WebMethod
@Override
public void update(@WebParam(name="UserInfo")UserInfo userInfo) {
authorize(userInfo);
System.out.println("Update ....");
}
public boolean authorize(UserInfo userInfo) {
System.out.println(" UserInfo.name: " +userInfo.getName());
System.out.println(" UserInfo.sex: " +userInfo.getSex());
if(userInfo.getName().equals(userInfo.getSex())) {
return true;
} else {
return false;
}
}
}
step 4:在META-INF/xfire/services.xml 文件中加入对应的webservice实现类
<serviceClass>com.vms.cmn.dao.impl.UserDaoImpl</serviceClass>
在启动Tomcat 就OK
step 5:输入地对应的地址:http://localhost:8080/vms_cmn/WebService/UserDaoImpl?wsdl
就可以得到对应的wsdl 文件如下
<?xml version="1.0" encoding="UTF-8" ?>
- <wsdl:definitions targetNamespace="http://impl.dao.cmn.vms.com" xmlns:ns1="http://cmn.vms.com" xmlns:soapenc12="http://www.w3.org/2003/05/soap-encoding" xmlns:tns="http://impl.dao.cmn.vms.com" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:soapenc11="http://schemas.xmlsoap.org/soap/encoding/" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
- <wsdl:types>
- <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://cmn.vms.com">
- <xsd:complexType name="UserInfo">
- <xsd:sequence>
<xsd:element minOccurs="0" name="age" type="xsd:int" />
<xsd:element minOccurs="0" name="id" nillable="true" type="xsd:int" />
<xsd:element minOccurs="0" name="name" nillable="true" type="xsd:string" />
<xsd:element minOccurs="0" name="sex" nillable="true" type="xsd:string" />
</xsd:sequence>
</xsd:complexType>
- <xsd:complexType name="ArrayOfUserInfo">
- <xsd:sequence>
<xsd:element maxOccurs="unbounded" minOccurs="0" name="UserInfo" nillable="true" type="ns1:UserInfo" />
</xsd:sequence>
</xsd:complexType>.................................................
</wsdl:definitions>
服务端开发成功OK
2.2 根据以上内容开发客户端
step 1 :新建一下web 工程将对应的*.jar 复制到lib 目录下
新建build.xml 文件内客如下
<?xml version="1.0" encoding="UTF-8"?>
<project name="xfireAnt" basedir="." default="createCode">
<property name="xfirelib" value="${basedir}/WebContent/WEB-INF/lib"/>
<property name="sources" value="${basedir}/src"/>
<path id="classpath">
<fileset dir="${xfirelib}">
<include name="*.jar"/>
</fileset>
</path>
<target name="createCode">
<taskdef name="wsgen" classname="org.codehaus.xfire.gen.WsGenTask" classpathref="classpath"/>
<wsgen outputDirectory="${sources}"
wsdl="http://localhost:8080/vms_cmn/WebService/UserDaoImpl?wsdl"
package="com.vms.cmn.client" overwrite="true"/>
</target>
</project>
step 2 : 在eclipse 中Ant 运行build.xml 文件
就会自动生成客户端代码
step 3: 测试对应的代码新建一下ClientTest 类 注意对应的JAXBElement对应的创建方法
package com.vms.cmn.client;
import javax.xml.bind.JAXBElement;
import javax.xml.namespace.QName;
import com.vms.cmn.UserInfo;
public class ClientTest {
/**
* @param args
*/
public static void main(String[] args) {
UserDaoImplClient user = new UserDaoImplClient();
UserDaoImplPortType type = user.getUserDaoImplHttpPort();
UserInfo userInfo = new UserInfo();
userInfo.setAge(23);
JAXBElement<String> userInfoName = new JAXBElement<String>(
new QName("http://cmn.vms.com","name"),String.class,"liuqing");
JAXBElement<String> userInfoSex = new JAXBElement<String>(
new QName("http://cmn.vms.com","sex"),String.class,"male");
JAXBElement<Integer> userInfoId = new JAXBElement<Integer>(
new QName("http://cmn.vms.com","id"),Integer.class,33
);
userInfo.setName(userInfoName);
userInfo.setSex(userInfoSex);
userInfo.setAge(2355);
userInfo.setId(userInfoId);
type.insert(userInfo);
// System.out.println(type.getAll().getUserInfo());
for(UserInfo en:type.getAll().getUserInfo()){
System.out.println(en + "Object");
}
System.out.println("====================");
for(UserInfo en:type.getAll().getUserInfo()){
System.out.println(en + "Object");
}
}
}
运行结果为OK
id:0name: liuqing0sex:maleObject
id:1name: liuqing1sex:woObject
id:2name: liuqing2sex:maleObject
id:3name: liuqing3sex:woObject
id:4name: liuqing4sex:maleObject
id:5name: liuqing5sex:woObject
id:6name: liuqing6sex:maleObject
id:7name: liuqing7sex:woObject
id:33name: liuqingsex:maleObject
====================
id:0name: liuqing0sex:maleObject
id:1name: liuqing1sex:woObject
id:2name: liuqing2sex:maleObject
id:3name: liuqing3sex:woObject
id:4name: liuqing4sex:maleObject
id:5name: liuqing5sex:woObject
id:6name: liuqing6sex:maleObject
id:7name: liuqing7sex:woObject
id:33name: liuqingsex:maleObject
分享到:
相关推荐
webservice中用到的jar,xfire-jsr181-api-1.0-M1.jar,xfire-jsr181-api-1.0-M1.jar
标题 "xfire-jsr181-api-1.0-实例化webservic" 指的是使用XFire框架结合JSR 181规范来创建和实例化Web服务的过程。XFire是一款早期的Java Web服务实现,它提供了一种简单、高性能的方式来创建和消费SOAP服务。JSR ...
xfire-jsr181-api-1.0-M1.jar xfire-spring-1.2.2.jar xfire-xmlbeans-1.2.2.jar 支持将Web服务绑定到POJO、XMLBeans、JAXB1.1、JAXB2.0和Castor; 支持基于HTTP、JMS、XMPP等多种协议访问Web服务; 支持多种Web服务...
Spring 2.5引入了对JSR-250注解的支持,如`@WebService`,这使得可以直接在服务接口和实现类上使用注解,减少了XML配置的需求。例如: ```java @WebService(targetNamespace = "http://example.com/myweb", service...
进行WebService开发中所用到的xfire所有相关包如:xfire-jsr181-api-1.0-M1.jar、xfire-jaxws-1.2.6.jar、xfire-java5-1.2.6.jar、xfire-core-1.2.6.jar、xfire-annotations-1.2.6.jar、xfire-aegis-1.2.6.jar、...
借助XFire提供的服务导出器,开发者无需复杂的XML配置,只需使用JSR 181注解就能标记POJO方法,让它们成为Web服务的接口。这种方式极大地简化了Web服务的开发流程,降低了学习曲线,同时保持了代码的整洁和可维护性...
activation.jar commons-logging.jar jdom-1.0.jar spring-mock.jar spring.jar stax-api-1.0.1.jar ...xfire-jsr181-api-1.0-M1.jar xfire-spring-1.2.6.jar xfire-xmlbeans-1.2.6.jar xstream-1.3.1.jar
5. **Annotations**:支持JSR-181 Web服务注解,使得开发更简洁。 6. **拦截器(Interceptor)**:允许在服务调用前后插入自定义逻辑,增强了可扩展性和控制力。 7. **Client API**:提供简单易用的客户端接口,方便...
1. **基于注解的方式**:Spring支持使用JSR-181注解来定义Web服务接口和服务实现。通过在接口和实现类上添加相应的注解,如`@WebService`、`@SOAPBinding`等,可以轻松地声明一个Web服务。然后,Spring会自动地发现...
Apache CXF是一个强大的开源Services框架,它不仅实现了JAX-WS(Java API for XML-Web Services)API,还提供了全面的支持,包括JAX-WSA、JSR-181和SAAJ等标准。CXF的一大亮点是它可以无缝地与Spring框架集成,使得...
XFire还提供了一个强大灵活的接口,用于支持JSR-181规范,可以使用注解的方式来定义Web服务的接口。它的客户端和服务器端代码都可以通过XFire自动生成,大大提升了开发效率。 在XFire的配置中,需要特别注意的是...
【WebService速成】这篇文章主要介绍了如何使用XFire与Spring构建Web Service应用,XFire作为一个现代的Web Service框架,因其简洁的API和对Web Service标准的良好支持而受到开发者欢迎。相较于Axis,XFire具有以下...
此外,XFire还支持JSR181,允许开发者使用JDK5的注解来配置Web服务。 在安装XFire时,你需要从xfire.codehaus.org下载1.2.6版本的全部二进制发布包,然后解压缩到你选择的文件夹。解压后的目录结构包括: 1. api:...
- **标准支持**:XFire支持JSR181、WSDL2.0、JAXB2、WS-Security等最新的Webservice标准和技术。 - **高性能**:通过使用Stax(Streaming API for XML)解析XML,XFire实现了性能上的显著提升。具体实现上,XFire...
4. **JSR181支持**:允许通过JDK5的注解来配置Web服务,提高了开发效率。 5. **高性能SOAP实现**:XFire提供了高效的SOAP处理机制,确保服务的响应速度。 6. **代码生成**:提供服务器端和客户端的代码生成工具,...
3. **配置Xfire**:你需要配置Xfire以使用Spring的ApplicationContext来查找服务实现。这可以通过创建一个`XFireConfigurer`的实现来完成,然后在Spring配置文件中声明它。 4. **发布Web服务**:一旦配置完成,...
XFire是一个先进的Web Service框架,与Axis 2并列,它提供了更简洁的API以支持Web Service的各种标准协议,如JSR181、WSDL2.0、JAXB2和WS-Security等。相比Axis,XFire因其易于使用、高性能和与Spring的紧密集成而受...