`
goto0917
  • 浏览: 47972 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论
  • take: 这是POI方式,不是JXLS方式. JXLS包路径都是net ...
    jxls
阅读更多
一、服务器端开发

       首先编写服务端程序,这时我们完全不用考虑他是不是当作webservcies来发布的,因为在写法上没有什么不同。比如我们写了一个很简单的java程序,代码如下:

package samples.userguide.example2 

public class calculator {

public int add(int i1  int i2)

{

     return i1 + i2 

}

public int subtract(int i1  int i2)

{

     return i1 - i2 

}

}

如果我们要把他发布成为services,首先需要把axis-1_3下的lib文件复制到我们的web服务的web-inf 的lib下。 然后在web.xml里增加以下内容

< servlet> 

     < display-name> apache-axis servlet< /display-name> 

     < servlet-name> axisservlet< /servlet-name> 

     < servlet-class> org.apache.axis.transport.http.axisservlet< /servlet-class> 

< /servlet> 

< servlet-mapping> 

     < servlet-name> axisservlet< /servlet-name> 

     < url-pattern> /servlet/axisservlet< /url-pattern> 

< /servlet-mapping> 

< servlet-mapping> 

     < servlet-name> axisservlet< /servlet-name> 

     < url-pattern> .jws< /url-pattern> 

< /servlet-mapping> 

< servlet-mapping> 

     < servlet-name> axisservlet< /servlet-name> 

     < url-pattern> /services/< /url-pattern> 

< /servlet-mapping> 

第一个是制定axisservlet的类是必须的,余下的是配置servlet mapping的,可根据需要进行修改,比如不需要对 .jws做mapping的时候就可以去掉相应的部分。完成了上边的必须配置我们就有两种方式来发布了:

1、动态发布,直接把calculator 的java文件复制到webroot下,把calculator.java更名为calculator.jws,然后通过 http://localhost:8080/calculator.jws 访问就可以 ,通过 http://localhost:8080/calculator.jws?wsdl 就可以看到相应的wsdl。这种方式调试起来比较麻烦,而且我再测试的时候也不能带package的信息,而且一些高级的配置无法实施,不建议采用。

2、静态发布,就是通过配置文件发布,这时候我们类的编译和普通的web方式没有不同,只是在web-inf下多了一个配置文件,默认的名称为server-config.wsdd

< ?xml version=" 1.0"  encoding=" utf-8" ?> 

< deployment name=" defaultclientconfig" 

     xmlns:java=" http://xml.apache.org/axis/wsdd/providers/java" 

     xmlns:handler=" http://xml.apache.org/axis/wsdd/providers/handler"  xmlns=" http://xml.apache.org/axis/wsdd/" > 

     < globalconfiguration name=" defaultclientconfig" > 

         < requestflow name=" requestflow1"  type=" " > 

             < handler name=" handler1"  type=" java:org.apache.axis.handlers.jwshandler" > 

                 < parameter name=" scope"  value=" session" /> 

             < /handler> 

             < handler name=" handler2"  type=" java:org.apache.axis.handlers.jwshandler" > 

                 < parameter name=" scope"  value=" request" /> 

                 < parameter name=" extension"  value=" .jwr" /> 

             < /handler> 

         < /requestflow> 

     < /globalconfiguration> 

     < handler name=" urlmapper"  type=" java:org.apache.axis.handlers.http.urlmapper" /> 

     < handler name=" localresponder"  type=" java:org.apache.axis.transport.local.localresponder" /> 

     < handler name=" authenticate"  type=" java:org.apache.axis.handlers.simpleauthenticationhandler" /> 

     < transport name=" http"  type=" " > 

         < requestflow name=" requestflow1"  type=" " > 

             < handler name=" handler1"  type=" urlmapper" /> 

             < handler name=" handler2"  type=" java:org.apache.axis.handlers.http.httpauthhandler" /> 

         < /requestflow> 

     < /transport> 

     < transport name=" local"  type=" " > 

         < responseflow name=" responseflow1"  type=" " > 

             < handler name=" handler1"  type=" localresponder" /> 

         < /responseflow> 

     < /transport> 

     < service name=" adminservice"  type=" "  provider=" java:msg" > 

         < parameter name=" allowedmethods"  value=" adminservice" /> 

         < parameter name=" enableremoteadmin"  value=" false" /> 

         < parameter name=" classname"  value=" org.apache.axis.utils.admin" /> 

         < namespace> http://xml.apache.org/axis/wsdd/< /namespace> 

     < /service> 

     < service name=" version"  type=" "  provider=" java:rpc" > 

         < parameter name=" allowedmethods"  value=" getversion" /> 

         < parameter name=" classname"  value=" org.apache.axis.version" /> 

     < /service> 

     < service name=" calculator"  type=" "  provider=" java:rpc"  style=" rpc"  use=" encoded" > 

         < parameter name=" scope"  value=" request" /> 

         < parameter name=" classname"  value=" samples.userguide.example2.calculator" /> 

         < parameter name=" allowedmethods"  value=" " /> 

         < namespace> http://example2.userguide.samples< /namespace> 

     < /service> 

     < service name=" orderprocessor"  provider=" java:rpc" > 

         < parameter name=" classname"  value=" samples.userguide.example5.beanservice" /> 

         < parameter name=" allowedmethods"  value=" " /> 

         < beanmapping qname=" myns:order"  xmlns:myns=" urn:beanservice"  languagespecifictype=" java:samples.userguide.example5.order" /> 

     < /service> 

< /deployment> 

其中要发布的每个service都需要加上一个service的节点描述,其他多余的servie节点可以删除的,这样重启tomcat后,我们就可以以http://localhost:8080/services/calculator 来访问这个service了,同样以http://localhost:8080/services/calculator?wsdl 访问到它的wsdl描述文件。

二、客户端开发

在开发工具中引进lib下的jar包;然后编写客户端程序

package samples.userguide.example2 

import org.apache.axis.client.call 

import org.apache.axis.client.service 

import org.apache.axis.encoding.xmltype 

import org.apache.axis.utils.options 

import javax.xml.rpc.parametermode 

public class calcclient

{

    public static void main(string [] args) throws exception {

        try{

            string endpoint = " https://localhost:8440/services/calculator"  

            integer i1 = new integer(1) 

            integer i2 = new integer(2) 

            service service = new service() 

            call call = (call) service.createcall() 

            call.settargetendpointaddress(new java.net.url(endpoint)) 

            call.setoperationname(" add" ) 

            call.addparameter(" i1"   xmltype.xsd_int  parametermode.in) 

            call.addparameter(" i2"   xmltype.xsd_int  parametermode.in) 

            call.setreturntype(xmltype.xsd_int) 

            integer ret = (integer) call.invoke(new object[] {i1  i2}) 

            system.out.println(" got result : "  + ret) 

        }

        catch(exception e){

            e.printstacktrace() 

        }

    }

}

其中 setoperationname就是指定执行的方法,addparameter就是指定参数

运行一下吧

0

0

0

分享到:
评论

相关推荐

    Android通过webservice连接Sqlserver实例

    这个场景通常是通过Web服务,如WebService来实现。本文将详细介绍如何在Android应用中利用WebService接口连接到SQLServer数据库,实现数据的增删改查操作。 首先,理解概念: 1. Android:Android是一种开源操作...

    WebService教程+实例+代码提示功能WebService实例.rar

    这个"WebService教程+实例+代码提示功能WebService实例.rar"压缩包文件显然包含了关于WebService的学习资料、实例代码和可能的代码提示功能,旨在帮助用户深入理解和实践WebService的开发。 首先,"教程地址.txt"很...

    webservice测试调用工具WebserviceStudio20

    WebserviceStudio是一款强大的Web服务测试和调用工具,版本为20。这款工具主要帮助开发者和测试人员方便地测试和调试他们的Web服务。以下是WebserviceStudio的一些核心功能和相关知识点: 1. **图形化界面**:...

    C#调用JavaWebService

    调用WebService,最简单的办法当然是直接添加WEB引用,然后自动产生代理类,但是在调用JAVA的WebService时并没有这么简单,特别是对于SoapHeader的处理,通过C#添加Web引用方式访问JavaWebService的方法,除了string...

    SqlServer触发器调用WebService

    ### SqlServer触发器调用WebService知识点详解 #### 一、SqlServer触发器简介 在了解如何通过Sql Server触发器调用WebService之前,我们首先需要对触发器有一个基本的认识。触发器是一种特殊的存储过程,它被定义...

    c++调用webservice(包括静态和动态以及webservice源码)

    然而,由于其自身不直接支持Web服务(WebService)的调用,开发者通常需要借助第三方库或者特定的技术来实现。本篇文章将详细讲解如何在C++中调用WebService,包括静态和动态方式,并探讨相关的源码实现。 首先,让...

Global site tag (gtag.js) - Google Analytics