xfire demo 实例

(一) 通过 xfire 发布 webservice 服务
1.添加 xfire相关jar包(以maven为例):

 <dependency>
    	<groupId>org.codehaus.xfire</groupId>
    	<artifactId>xfire-all</artifactId>
    	<version>1.2.6</version>
   </dependency>

2.配置 web.xml

     <servlet>
        <servlet-name>XFireServlet</servlet-name>
        <servlet-class>org.codehaus.xfire.transport.http.XFireConfigurableServlet</servlet-class>
        <load-on-startup>0</load-on-startup>
    </servlet>
     
    <servlet-mapping>
        <servlet-name>XFireServlet</servlet-name>
        <url-pattern>/services/*</url-pattern>  //服务的发布匹配地址
    </servlet-mapping>
3. 创建 服务接口
    package demo;
    public interface ServerTest {
          
        void say(String str);
    }

4. 创建实现类实现 ServerTest
package demo;

public class ServerTestImpl implements ServerTest {

    public void say(String str) {
        System.out.println(str);
    }

}

5. 定义 services.xml --> [ WEB-INF\classes\META-INF\xfire ] 发布webservice的配置
    没有此文件需要创建
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://xfire.codehaus.org/config/1.0">            
    <service>   
        <name>Test</name>   //定义webservice的发布名称
        <namespace>haople</namespace>   //定义webservice的命名空间
        <serviceClass>demo.ServerTest</serviceClass>    //接口类
        <implementationClass>demo.ServerTestImpl</implementationClass>  //实现类
    </service>              
</beans>

启动服务后:访问  http://127.0.0.1:8080/demo/services/Test?wsdl 

 (二) 通过 xfire 客户端 调用 webservice 服务

方法一:
    package demo;

import org.codehaus.xfire.client.XFireProxyFactory;
import org.codehaus.xfire.service.Service;
import org.codehaus.xfire.service.binding.ObjectServiceFactory;

public class ClientTest {

    public static void main(String[] args) {
        try {
        Service service=new ObjectServiceFactory().create(ServerTest.class); // 创建服务
        ServerTest test=(ServerTest) new XFireProxyFactory().create(service, "http://127.0.0.1:8080/demo/services/Test"); //代理服务(此处不是wsdl地址)
         test.say("hello word!"); //执行方法
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    
} 

方法二:

package demo;

import java.net.URL;
import org.codehaus.xfire.client.Client;

public class ClientTest {

    public static void main(String[] args) {
        try {
        
            Client client=new Client(new URL("http://127.0.0.1:8080/demo/services/Test?wsdl")); //此处访问的是wsdl地址
            client.invoke("say", new Object[]{"hello world!"}); //第一个参数为 执行的方法名,第二个参数是执行的参数,返回的是Object[]
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
时间: 2024-08-03 11:31:02

xfire demo 实例的相关文章

java swing开发的图像生成器demo实例源代码下载,实现绘制图像,截屏功能。

一个类似于画画的javase程序 绘制图形 原文:java swing开发的图像生成器demo实例源代码下载,实现绘制图像,截屏功能. java源代码下载地址:http://www.zuidaima.com/share/1550463330028544.htm 获取屏幕 打开调色板

ajax 前后端数据传输demo实例

先写html页面(test.html): 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="utf8"> 5 <title>ajax</title> 6 <script type="text/javascript" src='http://apps.bdimg.com/libs/jquery/1.6.4/jquery.min.js'&

java 通过Apache poi导出excel代码demo实例

package com.zuidaima.excel.util; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.

ThinkPHP3.2.2 Widget扩展以及widget demo实例

Widget扩展一般用于页面组件的扩展. 先说明Widget被调用的方法,你只需要在你的模板文件中使用这样的语法:{:W("Demo/demo_widget_method",array(5,'thinkphp'))} 系统就会自动去寻找对应的Widget类文件并执行对应的方法. 具体步骤如下: 1.因为是直接在模板中写的{:W("Demo/demo_widget_method",array(5,'thinkphp'))},所以要了解后面的步骤,我们得移步系统的Tem

js IndexedDB:浏览器端数据库的demo实例

IndexedDB具有以下特点. (1)键值对储存. IndexedDB内部采用对象仓库(object store)存放数据.所有类型的数据都可以直接存入,包括JavaScript对象.在对象仓库中,数据以“键值对”的形式保存,每一个数据都有对应的键名,键名是独一无二的,不能有重复,否则会抛出一个错误. (2)异步. IndexedDB操作时不会锁死浏览器,用户依然可以进行其他操作,这与localStorage形成对比,后者的操作是同步的.异步设计是为了防止大量数据的读写,拖慢网页的表现. (3

jQuery 自制上传头像插件-附带Demo实例(ajaxfileupload.js第三弹)

这篇文章主要是对前两篇关于ajaxfileupload.js插件的文章 <ASP.NET 使用js插件出现上传较大文件失败的解决方法(ajaxfileupload.js第一弹> <jQuery 关于ajaxfileupload.js插件的逐步解析(ajaxfileupload.js第二弹)> 的一个收关.但是最初也是因为想做这么一个功能,一点一点的引发出了好多问题,不断去学习,研究,才写了这三篇. 早些时候已经实现了上传头像的功能,但是代码却是零零散散的,有html,有jQuery

webpack+vue+vueRouter模块化构建小demo实例超详细步骤(附截图、代码、入门篇)

说明:本demo使用yarn代替npm指令来下载一系列依赖,有详细指令说明:使用WebStorm下Terminal来输入指令: >开始(确认已经安装node环境和yarn包管理工具) 1.新建项目文件名为vuedemo 2.yarn add init  初始化项目 >安装项目依赖 3.yarn add vue 安装最新版vue 4.yarn add webpack webpack-dev-server  安装webpack,webpack-dev-server(是一个小型的Node.js Ex

vue+websocket demo 实例

vue+websocket demo: <!-- vue + websocket连接demo --> <template> <div class="">vue + websocket连接demo</div> </template> <script> export default { data() { return { // 连接标志位 lockReconnect: false, wsCfg: { // websoc

微信js-sdk分享详解及demo实例

步骤一:绑定域名 先登录微信公众平台进入"公众号设置"的"功能设置"里填写"JS接口安全域名". 步骤二:引入JS文件 在需要调用JS接口的页面引入如下JS文件,(支持https):http://res.wx.qq.com/open/js/jweixin-1.2.0.js <script src="http://res.wx.qq.com/open/js/jweixin-1.0.0.js"></script&