XFire创建WebService实例

webservice在项目中经常使用,今天在项目中使用xfire,所以今天就简单写下xfire实现方式;
再写之前我们应该知道这几个问题:

  1. 什么是WebService?
  2. 它能做什么?
  3. 为什么要学习WebService?
  4. 学习WebService要达到什么目的?

今天我就不仔细写这些答案了,可以自行百度,或者等待我后面的文章更新出来详细说明;下面就直接写实现代码:
服务端的实现:
首先一个接口和一个实现类,接口就是为了发布出去让外部访问到我们内部的数据:
接口

public interface IHelloWebService {
    public String sayHello(String name, int age);
}

实现类

public class HelloWebService implements IHelloWebService {

    public String sayHello(String name, int age) {
        return "我的名字是"+name+";今年"+age+"岁";
    }

}

这里写图片描述

service.xml里面内容

<!-- START SNIPPET: services -->
<beans xmlns="http://xfire.codehaus.org/config/1.0">
  <service>
    <!-- 服务名称 -->
    <name>HellowebService</name>
    <!-- 命名空间 -->
    <namespace>http://xfire.codehaus.org/BookService</namespace>
    <!-- 接口 -->
    <serviceClass>com.wfg.webservice.IHelloWebService</serviceClass>
    <!-- 实现类 -->
    <implementationClass>com.wfg.webservice.impl.HelloWebService</implementationClass>

  </service>
</beans>
<!-- END SNIPPET: services -->

xfire是用servlet实现的,所以要在web.xml里面配置如下的代码

 <servlet>
    <servlet-name>XFireServlet</servlet-name>
    <display-name>XFire Servlet</display-name>
    <servlet-class>
        org.codehaus.xfire.transport.http.XFireConfigurableServlet
    </servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>XFireServlet</servlet-name>
    <url-pattern>/servlet/XFireServlet/*</url-pattern>
  </servlet-mapping>

  <servlet-mapping>
    <servlet-name>XFireServlet</servlet-name>
    <url-pattern>/services/*</url-pattern>
  </servlet-mapping>

友情提示不要忘记把xfire的jar包和依赖包导入项目中启动服务器在浏览器中访问:http://localhost:8080/webservice/services便可以查看我们的对外发布的接口
这里写图片描述
点击后查看详细的wsdl文档

在同一个应用中测试:

public class Test {

    public static void main(String[] args) throws MalformedURLException {
        Service service =(Service) new ObjectServiceFactory().create(IHelloWebService.class);
        XFireProxyFactory factory = new XFireProxyFactory(XFireFactory.newInstance().getXFire());
        String url="http://localhost:8080/webservice/services/HellowebService";
        IHelloWebService helloWebService=(IHelloWebService) factory.create( service, url);
        String rest=helloWebService.sayHello("张三", 23);
        System.out.println(rest);
    }
}

时间使用中一般是在不同的应用中使用,甚至访问的应用都是不同的语言:下面我们还是使用Java实现,自己可以尝试.net c#等语言访问.
再client端建立2个文件分别为
build.properties

src.dir=${basedir}
lib.dir=G\:\\SSHworkspace1\\webservice_client\\WebRoot\\WEB-INF\\lib
wsdl.dir=http\://localhost\:8080/webservice/services/HellowebService?wsdl 

build.xml

<?xml version="1.0" encoding="UTF-8"?>  
<project name="WebService" basedir="." default="gen-webservice">  
    <property file="build.properties"></property>  
    <path id="project-classpath">  
        <fileset dir="${lib.dir}">  
            <include name="**/*.jar" />   
        </fileset>  
    </path>  

    <target name="gen-webservice">  
        <taskdef name="wsgen" classname="org.codehaus.xfire.gen.WsGenTask"   
                                             classpathref="project-classpath" />  
        <wsgen outputDirectory="${src.dir}"  wsdl="${wsdl.dir}"   
                    package="stub.test.client" overwrite="true"/>          
    </target>  
</project>  

运行build.xml文件
这里写图片描述
项目中会自动生成上面的代码
测试代码

public class ClientTest {
    public static void main(String[] args) {
        HellowebServiceClient service = new HellowebServiceClient();
        HellowebServicePortType portType =service.getHellowebServiceHttpPort();
        System.out.println(portType.sayHello("张三",12));  


    }
}

项目代码:
链接:http://pan.baidu.com/s/1dF7VF5R 密码:c28r

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值