webservice

一、服务器端开发

首先编写服务端程序,这时我们完全不用考虑他是不是当作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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值