xfire建立 Web Service

XFire是与Axis2 并列的新一代WebService平台.我只学了点XFire,所以就说XFire,不说AXis2.XFire它有如下特性:

支持多个重要的Web Service标准,包括SOAP,WSDL,WS-I Basic Profile,WS-Addressing WS-Security等
可选的绑定方式,如POJO,XMLBeansJAXB1.1,JAXB2.0 CAstor JiBX等
支持 JSR181 API
多种传输方式,如 HTTP,JMS,XMPP,IN-JVM等
支持多个容器,如 Spring,Pico,Plexus,Loom
支持 JBI
(上面说的东西,我建议了解清楚,既能拓展知识面,同时也更清楚XFire到底支持的是什么东西.这对自己有很大帮助.我自己光了解上面东西概念,就用了一下午,学到很多)
2007年后Xfire改名为Apache CXF 

既然了解了XFire能做啥,又知道XFire是新一代.那么下面就开始建立用XFire建立Web Service 下面以service为例

1 建立接口和实现类

当然首先的加入XFire包.

//定义接口
package com.ywxm.service;
public interface SimpleService {

	public String login(@WebParam String username, String password);
	public void getUser();
}
//接口实现类

package com.ywxm.service.support;

import com.ywxm.service.SimpleService;

public class SimpleServiceImpl implements SimpleService {

    public String login(String username, String password) {

        if (username.equals("") || username == null) {
            return "交出用户名";
        }
        if (password.equals("") || password == null) {
            return "交出密码";
        }
        return "ok";

    } 
    public void getUser() {

    }

} 

2 建立services.xml.保存在WEB-INF/src/META-INF/xfire文件夹下.如果是maven工程将META-INF/xfire/service.xml建立在src/main/resources 下


<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://xfire.codehaus.org/config/1.0">
<service>
   <name>SimpleService </name>                                                     <!--web services 名  -->
   <namespace>http://webservice.ywxm.com</namespace>                                  
   <serviceClass>com.ywxm.service.SimpleService </serviceClass>                    <!--接口 -->
   <implementationClass>com.ywxm.service.support.SimpleServiceImpl </implementationClass>  <!-- 接口实现-- >
</service>
<beans>

3 web.xml配置

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">


	<servlet>
		<servlet-name>XFireServlet</servlet-name>
		<servlet-class>org.codehaus.xfire.transport.http.XFireConfigurableServlet</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>XFireServlet</servlet-name>
		<url-pattern>/services/*</url-pattern>
	</servlet-mapping>
</web-app>
 在web.xml配置xfireServlet.它负责提供Web Service,并提供每个Web Service的WSDL.

4 将工程部署,运行.http://localhost:8080/service/services

Available Services:

    SimpleService [wsdl]
    Generated by XFire ( http://xfire.codehaus.org ) 

点击[wsdl]查看到wsdl文件,表明web service发布成功.

5  建立 client来使用这个web服务.

 

public static void main(String[] args) throws MalformedURLException {
  <!--web service发布的URL.如果不清楚可查看<wsdl:service name="">....</wsdl:service> -->
   String serviceURL = "http://localhost:8080/service/services/SimpleService";   		
   Service serviceModel = new ObjectServiceFactory().create(SimpleServicePortType.class);
   XFireProxyFactory serviceFactory = new XFireProxyFactory();
   <!--SimpleServicePortType 为客户端定义的bean  -->
   SimpleServicePortType service = (SimpleServicePortType) serviceFactory.create(serviceModel, serviceURL);

   // 忽略http连接的超时时间,0为不设置超时时间,》=1为超时毫秒数
   Client client = Client.getInstance(service);
   client.setProperty(CommonsHttpMessageSender.HTTP_TIMEOUT, "0");
  
   String hello = service.login("", "");  //参数不能为null
 }

也可以使用wsdl生成客户端代码. 可以看下这位仁兄写的   http://blog.csdn.net/stoneyang2005/article/details/3939117


上面实现方式只是XFire一种,其实也是可以通过注解实现.使用注解可以减少很多xml配置.jsr181提供了一套注解web service 的方法.使用只需要修改两个地方.


1上面说的接口和实现类.使用注解将不再使用接口和实现类的方式,而是直接定义一个服务类

package com.ywxm.service.support;

import com.ywxm.service.SimpleService;

@WebService
public class SimpleService{
    
 @WebMethod
 @WebResult
 public String login(@WebParam String username, @WebParam String password) {

        if (username.equals("") || username == null) {
            return "交出用户名";
        }
        if (password.equals("") || password == null) {
            return "交出密码";
        }
        return "ok";

 }
 @WebMenthod
 public void getUser() {

 }
} 
@WebService 、@WebMethod 、@WebResult、@WebParam 核心属性具有默认值.它们具体用法和意思,查看 JDK API

2 修改services.xml

 

<?xml version="1.0" encoding="UTF-8"?>
<beans >
    <service xmlns="http://xfire.codehaus.org/config/1.0">
      <serviceClass>com.ywxm.webservice.support.SimpleService
      <serviceFactory>jsr181</serviceFactory>
    </service>
</beans> 

然后根据WDSl编写客户端.自己使用可以用wsdl生成.






有兴趣的可以去看看

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值