基于JAVA中使用Axis发布/调用Webservice的方法详解

本示例和参考文章的差别在于:

1)deploy.wsdd定义的更详细(对于server端定义了接口:ICalculate):


代码如下:

<deployment xmlns="http://xml.apache.org/axis/wsdd/"
    xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
    <service name="Calculate" provider="java:RPC" style="rpc" use="literal">
        <parameter name="wsdlTargetNamespace" value="http://web.webservice.CalculateService.org" />
        <parameter name="wsdlServiceElement" value="Calculate" />
        <parameter name="wsdlServicePort" value="CalculateService" />
        <parameter name="wsdlPortType" value="ICalculate" />
        <parameter name="className" value="org.calculateservice.service.CalculateImp" />
        <parameter name="typeMappingVersion" value="1.2" />
        <parameter name="allowedMethods" value="add sub" />
        <parameter name="scope" value="Request" />
        <operation name="add" qname="operNS:add"
            xmlns:operNS="http://web.webservice.CalculateService.org"
            returnQName="addReturn" returnType="rtns:int" xmlns:rtns="http://www.w3.org/2001/XMLSchema"
            soapAction="">
            <parameter qname="x" type="tns:int"
                xmlns:tns="http://www.w3.org/2001/XMLSchema" />
            <parameter qname="y" type="tns:int"
                xmlns:tns="http://www.w3.org/2001/XMLSchema" />
        </operation>
        <operation name="sub" qname="operNS:sub"
            xmlns:operNS="http://web.webservice.CalculateService.org"
            returnQName="subReturn" returnType="rtns:int" xmlns:rtns="http://www.w3.org/2001/XMLSchema"
            soapAction="">
            <parameter qname="x" type="tns:int"
                xmlns:tns="http://www.w3.org/2001/XMLSchema" />
            <parameter qname="y" type="tns:int"
                xmlns:tns="http://www.w3.org/2001/XMLSchema" />
        </operation>
    </service>
</deployment>

2)自定义了AxisServlet:org.calculateservice.core.AxisServlet(兼容了.NET 去掉了SOAPACTION的检验);

详细代码这里不贴了,感兴趣自行下载完整示例代码;

3)调用方式为用本地类调用(java调用WS好像有三种方式,个人感觉用本地代理类调用最为合理和可读):


代码如下:

public static void main(String[] args) throws ServiceException, RemoteException {       
        Calculate calculate  = new CalculateLocator();
        int result = calculate.getCalculateService().add(1, 2);
        System.out.println("[%1 + 2 = " + result + "%]");
    }

发布/调用WS的主要步骤:

1)将下载资源中的axis1.4安装包中的webapp中的axis目录copy到tomcat中的webapp目录中;

2)编写WS服务端实现代码;

3)在WEB-INF目录编写deploy.wsdd部署文件;

4)编写:generate-server-config.bat脚本,然后生成:server-config.wsdd,然后发布webservice;

5)编写:wsdl2java.bat脚本生成本地调用client代码;

6)编写测试代码调用WS;

代码结构图:

client:用WSDL2Java根据wsdl生成本地的client代码;

core:自定义的AxisServlet,兼容了.NET 去掉了SOAPACTION的检验;

service:WS服务端实现代码(这里用一个简单的加减计算做为实例);

test:根据生成的client类去调用server(生成的代码server地址是localhost的,如果需要将此地址改为配置,修改CalculateLocator类中变量CalculateService_address赋值即可);

点击下载完整示例

资源中包含示例完整代码和axis1.4安装文件

(0)

相关推荐

  • 基于JQuery的访问WebService的代码(可访问Java[Xfire])

    我仔细看看了看看几个人的例子,发现了问题.众所周知WebService是遵守SOAP协议的,为什么例子都是JSON格式的参数传递?net WebService兼容JSON格式,而Java的是标准WebService,不兼容JSON.看来net害了大家啊.于是我仔细了解了WSDL文件,做了个例子.下面只放关键代码. 复制代码 代码如下: $(function () { $("#btnWs").click(btnAjaxPost); }); function btnAjaxPost(eve

  • python调用java的Webservice示例

    一.java端首先我使用的是java自带的对webservice的支持包来编写的服务端和发布程序,代码如下.webservice的接口代码: 复制代码 代码如下: package com.xxx.test.ws; import javax.jws.WebMethod;import javax.jws.WebService; /** * Created with IntelliJ IDEA. * User: Administrator * Date: 14-3-5 * Time: 下午3:11 *

  • Java调用WebService接口的方法

    本文实例讲述了Java调用WebService接口的方法.分享给大家供大家参考.具体如下: 这里讲述有参方法Add,代码如下: 复制代码 代码如下: public static void addTest() {         try ...{             Integer i = 1;             Integer j = 2;                         //WebService URL             String service_url =

  • java实现简单的webservice方式

    本文实例为大家分享了java实现webservice方式的具体代码,供大家参考,具体内容如下 经过测试 jdk1.6.10以下会出现bug 建议使用10以上版本 1.定义接口 package org.enson.chan; import javax.jws.WebService; import javax.jws.soap.SOAPBinding; @WebService @SOAPBinding(style=SOAPBinding.Style.RPC) public interface IMy

  • PHP调用JAVA的WebService简单实例

    使用PHP调用JAVA语言开发的WebService.客户端提交两个String类型的参数,服务端返回一个对象类型.服务端使用AXIS-1.4作为SOAP引擎.客户端为PHP5.2.9,使用NuSOAP作为SOAP引擎. 服务端 对象类 复制代码 代码如下: import java.io.Serializable; public class Person implements Serializable {        /**     *      */    private static fi

  • Java编程中使用XFire框架调用WebService程序接口

    JAVA调用webservice,当你刚开始接触的时候你会觉得它是一个恶梦,特别是没有一个统一的标准实现,比起.net的那些几步就可以完成的webservice实现,我们看着JAVA的实现真是伤心啊.但就算是伤心,我们也还是要完成的.JAVA也不乏比较好的实现,如xfire,jersey,CXF. 这里我们就一起来看一下xfire的实现. 1)首先,当然是要下包啦,这个普通人都知道.http://xfire.codehaus.org/Download可以到这里去下,可以下all也可以下distr

  • 使用CXF和Jersey框架来进行Java的WebService编程

    CXF CXF是在xfire的基础上实现的. 1)首先呢,还是包的问题,在http://cxf.apache.org/download.html这里可以下到最新版的CXF,当然,我用的是最新版的.接下来还是那句废话,建WEB项目,放入JAR包.而JAR包我们就不选择了,一堆全部放入. 我们会看到它包含了spring的JAR包,后面当我们需要把CXF作为WEB项目部署时,就需要用到spring的配置文件,这个后面再讲. 还是接口类和实现类: @WebService public interface

  • php5 apache 2.2 webservice 创建与配置(java)

    php 5 apache 2.2 webservice 创建与配置 测试工具:wsCaller.jar (此文是给java程序调用的webservice) 提示:要运行wsCaller.jar 要选安装jdk 如果没有安装jdk 则wsCaller.jar 会以压缩包的形式显示 1 写webservice 要用到的接口 复制代码 代码如下: <?php class service { function add($a,$b){ $c=$a+$b; return $c; } function str

  • C# 调用 JavaWebservice服务遇到的问题汇总

    1. A SOAP 1.2 message is not valid when sent to a SOAP 1.1 only endpoint. 问题原因: 客户端和服务端的SOAP协议版本不一致. 解决方法: ①修改客户端SOAP协议版本和服务端一致 ②修改服务端SOAP协议版本和客户端一致 附Java服务端修改服务暴露SOAP版本方法: 在接口的实现类上面添加注解 //import javax.xml.ws.BindingType; //import javax.xml.ws.soap.S

  • Java访问WebService返回XML数据的方法

    本文实例讲述了Java访问WebService返回XML数据的方法.分享给大家供大家参考.具体如下: import java.io.IOException; import java.io.InputStream; import java.net.MalformedURLException; import java.net.URL; import java.net.URLConnection; import java.io.FileNotFoundException; import java.io

随机推荐