`

webservice 用xfire 插件 JSR181

阅读更多

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

 

 

分享到:
评论

相关推荐

    xfire-jsr181-api-1.0-M1.jar,xfire-jsr181-api-1.0-M1.jar

    webservice中用到的jar,xfire-jsr181-api-1.0-M1.jar,xfire-jsr181-api-1.0-M1.jar

    xfire-jsr181-api-1.0-实例化webservic

    标题 "xfire-jsr181-api-1.0-实例化webservic" 指的是使用XFire框架结合JSR 181规范来创建和实例化Web服务的过程。XFire是一款早期的Java Web服务实现,它提供了一种简单、高性能的方式来创建和消费SOAP服务。JSR ...

    Xfire整合webservice jar包

    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服务...

    webservice(xfire)+spring的二种实现方式

    Spring 2.5引入了对JSR-250注解的支持,如`@WebService`,这使得可以直接在服务接口和实现类上使用注解,减少了XML配置的需求。例如: ```java @WebService(targetNamespace = "http://example.com/myweb", service...

    webservice教程(xfire+spring)

    借助XFire提供的服务导出器,开发者无需复杂的XML配置,只需使用JSR 181注解就能标记POJO方法,让它们成为Web服务的接口。这种方式极大地简化了Web服务的开发流程,降低了学习曲线,同时保持了代码的整洁和可维护性...

    xfire相关jar包

    进行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-1.2.6

    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

    Webservice XFire

    5. **Annotations**:支持JSR-181 Web服务注解,使得开发更简洁。 6. **拦截器(Interceptor)**:允许在服务调用前后插入自定义逻辑,增强了可扩展性和控制力。 7. **Client API**:提供简单易用的客户端接口,方便...

    xfire+spring开发webservice

    1. **基于注解的方式**:Spring支持使用JSR-181注解来定义Web服务接口和服务实现。通过在接口和实现类上添加相应的注解,如`@WebService`、`@SOAPBinding`等,可以轻松地声明一个Web服务。然后,Spring会自动地发现...

    java webservice AXIS,XFire , CXF

    Apache CXF是一个强大的开源Services框架,它不仅实现了JAX-WS(Java API for XML-Web Services)API,还提供了全面的支持,包括JAX-WSA、JSR-181和SAAJ等标准。CXF的一大亮点是它可以无缝地与Spring框架集成,使得...

    WebService速成

    【WebService速成】这篇文章主要介绍了如何使用XFire与Spring构建Web Service应用,XFire作为一个现代的Web Service框架,因其简洁的API和对Web Service标准的良好支持而受到开发者欢迎。相较于Axis,XFire具有以下...

    java用XFire调用webservice例子.docx

    此外,XFire还支持JSR181,允许开发者使用JDK5的注解来配置Web服务。 在安装XFire时,你需要从xfire.codehaus.org下载1.2.6版本的全部二进制发布包,然后解压缩到你选择的文件夹。解压后的目录结构包括: 1. api:...

    Xfire框架的简单使用

    - **标准支持**:XFire支持JSR181、WSDL2.0、JAXB2、WS-Security等最新的Webservice标准和技术。 - **高性能**:通过使用Stax(Streaming API for XML)解析XML,XFire实现了性能上的显著提升。具体实现上,XFire...

    java用XFire开发调用webService例子知识.pdf

    4. **JSR181支持**:允许通过JDK5的注解来配置Web服务,提高了开发效率。 5. **高性能SOAP实现**:XFire提供了高效的SOAP处理机制,确保服务的响应速度。 6. **代码生成**:提供服务器端和客户端的代码生成工具,...

    spring3.0整合Xfire1.2.6 开发webservice需要的jar包

    3. **配置Xfire**:你需要配置Xfire以使用Spring的ApplicationContext来查找服务实现。这可以通过创建一个`XFireConfigurer`的实现来完成,然后在Spring配置文件中声明它。 4. **发布Web服务**:一旦配置完成,...

    xFire+spring

    XFire是一个先进的Web Service框架,与Axis 2并列,它提供了更简洁的API以支持Web Service的各种标准协议,如JSR181、WSDL2.0、JAXB2和WS-Security等。相比Axis,XFire因其易于使用、高性能和与Spring的紧密集成而受...

Global site tag (gtag.js) - Google Analytics