Java中使用webservice,简化开发(xfire的webservice)

首先,使用到的jar先导入项目中,

xbean-spring-2.8.jar, wsdl4j-1.6.1.jar, commons-httpclient-3.0.jar, commons-codec-1.3.jar, xfire-all-1.2.6.jar, xmlschema-1.1.jar, spring-1.2.6.jar,

commons-logging-1.0.4.jar, jdom-1.0.jar, 这9个包是xfire实现服务器端的webservice主要的包,包含访问webservice和生成webservice

1. 访问webservice文件:

  

public static String visit(String method, Object[] params) throws Exception{
        Client client = new Client(new URL(URL_SPAC));
        client.setTimeout(5000);    //访问超过5秒钟超时
        //设置访问的方法和参数
        Object[] results = client.invoke(method, params);
        return results[0].toString();
}

很简单,就这么几句代码就搞定。 URL_space为http://xxx:8080/WebServices/xxx.asmx?WSDL,就是webservice的访问地址,但一定要到 ?wsdl

暂时没有解决调用端使用数组参数。

2. 生成webservice

在src下新建 META-INF/xfire/services.xml 文件, 文件中这样写

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://xfire.codehaus.org/config/1.0">
    <service>
        <name>webservice名称</name>
        <serviceClass>java接口类路径</serviceClass>
        <implementationClass>java接口实现类路径</implementationClass>
        <style>wrapped</style>
        <use>literal</use>
        <scope>application</scope>
    </service>
</bean>

在web.xml中配置启动加载xfire的servlet类即可,代码如下:

<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>
 <servlet-mapping>
  <servlet-name>XFireServlet</servlet-name>
  <url-pattern>/services/*</url-pattern>
 </servlet-mapping>

这样,一个访问名称为 webservice名称 的webservice就启动起来了

时间: 2024-10-10 21:32:48

Java中使用webservice,简化开发(xfire的webservice)的相关文章

编程思想之多线程与多进程(2)——Java中的多线程

原文:http://blog.csdn.net/luoweifu/article/details/46673975 作者:luoweifu 转载请标名出处 <编程思想之多线程与多进程(1)--以操作系统的角度述说线程与进程>一文详细讲述了线程.进程的关系及在操作系统中的表现,这是多线程学习必须了解的基础.本文将接着讲一下Java中多线程程序的开发 单线程 任何程序至少有一个线程,即使你没有主动地创建线程,程序从一开始执行就有一个默认的线程,被称为主线程,只有一个线程的程序称为单线程程序.如下面

Java基础---使用循环操作Java中的数组(三十一)

使用循环操作 Java 中的数组 实际开发中我们经常使用循环控制数组成员的操作.如:  运行结果:  其中,  用于获取数组的长度 需要注意的"小毛病": 1. 数组下标从 0 开始.因此 scores[3] ,表示数组中的第 4 个元素,而并非第 3 个元素 2. 数组下标的范围是 0 至 数组长度-1 ,如果越界访问,就会报错.如: 运行时会报如下错误: 上面错误信息的意思是数组下标超过范围,即数组访问越界.在上面的代码中创建一个长度为 2 的数组,因此数组下标范围是 0 到 1

【转】编程思想之多线程与多进程(3)——Java中的多线程

<编程思想之多线程与多进程(1)——以操作系统的角度述说线程与进程>一文详细讲述了线程.进程的关系及在操作系统中的表现,这是多线程学习必须了解的基础.本文将接着讲一下Java中多线程程序的开发 单线程 任何程序至少有一个线程,即使你没有主动地创建线程,程序从一开始执行就有一个默认的线程,被称为主线程,只有一个线程的程序称为单线程程序.如下面这一简单的代码,没有显示地创建一个线程,程序从main开始执行,main本身就是一个线程(主线程),单个线程从头执行到尾. [Demo1]:单线程程序 pu

Java中WebService实例

Web Services是由企业公布的完毕其特定商务需求的在线应用服务,其它公司或应用软件可以通过Internet来訪问并使用这项在线服务. Web Service的关键技术和规则: 1.XML:描写叙述数据的标准方法. 2.SOAP:表示信息交换的协议(简单对象訪问协议). 3.WSDL:Web服务描写叙述语言. 4.UDDI:通用描写叙述.发现与集成,他是一种独立于平台,基于XML语言的用于在互联网上描写叙述商务的协议. 一.利用JDK web服务api实现,这里使用基于SOAP messa

如何在Java中快速发布WebService服务

在实际中,您是否遇到过需要发布WebService给别人调用的需求哪?如果您是个Java的新手,客户或合作方又催得很紧,您肯定为这事儿犯愁.别急,让我们看看能用哪些工具或对象发布.Java中可供选择的方式太多,如Axis2.XFire.JWS等.郁闷了,看都看不懂,谁知道该用哪一个. 别着急,如果您特别着急,客户马上就要要,那就用下面这种方法吧: 一.通过Axis2提供的模板自动发布 这种方法非常简单,只要下载Axis包后从里面的"axis-1_4\webapps"中找到axis站点,

你真的了解JAVA中与Webservice相关的规范和实现吗?

非常多人在项目中使用Webservice,仅仅是知道怎样公布Webservice,怎样调用Webservice,但真要论其来龙去脉,还真不一定清楚. 一切一切还要从我们伟大的sun公司规范说起. JAVA 中共同拥有三种WebService 规范,各自是JAXM&SAAJ.JAX-WS(JAX-RPC).JAX-RS. 以下来分别简要的介绍一下这三个规范.针对JDK 1.6以下版本号,新的还没研究过 (1.)JAX-WS: JAX-WS(Java API For XML-WebService),

JAVA中十四种常见开发工具及其特点

1.JDK (Java Development Kit)Java开发工具集 SUN的Java不仅提了一个丰富的语言和运行环境,而且还提了一个免费的Java开发工具集(JDK).开发人员和最终用户可以利用这个工具来开发java程序. JDK简单易学,可以通过任何文本编辑器(如:Windows 记事本.UltrEdit.Editplus.FrontPage以及dreamweaver等)编写Java源文件,然后在DOS状况下利通过javac命令将Java源程序编译成字节码,通过Java命令来执行编译后

ASP.NET MVC 中应用Windows服务以及Webservice服务开发分布式定时器

ASP.NET MVC 中应用Windows服务以及Webservice服务开发分布式定时器一:闲谈一下:1.现在任务跟踪管理系统已经开发快要结束了,抽一点时间来写一下,想一想自己就有成就感啊!!  2.关于任务跟踪管理系统项目中遇到的Windows服务以及Webservice的综合应用的问题. 大家好这是我第二次写博客 ,写的不好请大家多多谅解, 希望大家可以多多指正. 二:我稍微的整理了一下关于这个分布式定时器需求:1.根据任务跟踪管理系统中的数据库的AnswerSheet 表格中找到客户编

android开发中,在java中如何使用c提供过来char*

这个char*如果是一般的字符串的话,作为string传回去就可以了.如果是含有'\0'的buffer,最好作为bytearray传出,因为可以制定copy的length,如果copy到string,可能到'\0'就截断了. 有两种方式传递得到的数据: 一种是在jni中直接new一个byte数组,然后调用函数(*env)->SetByteArrayRegion(env, bytearray, 0, len, buffer);将buffer的值copy到bytearray中,函数直接return