一、服务器端开发
首先编写服务端程序,这时我们完全不用考虑他是不是当作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
分享到:
相关推荐
这个场景通常是通过Web服务,如WebService来实现。本文将详细介绍如何在Android应用中利用WebService接口连接到SQLServer数据库,实现数据的增删改查操作。 首先,理解概念: 1. Android:Android是一种开源操作...
这个"WebService教程+实例+代码提示功能WebService实例.rar"压缩包文件显然包含了关于WebService的学习资料、实例代码和可能的代码提示功能,旨在帮助用户深入理解和实践WebService的开发。 首先,"教程地址.txt"很...
WebserviceStudio是一款强大的Web服务测试和调用工具,版本为20。这款工具主要帮助开发者和测试人员方便地测试和调试他们的Web服务。以下是WebserviceStudio的一些核心功能和相关知识点: 1. **图形化界面**:...
调用WebService,最简单的办法当然是直接添加WEB引用,然后自动产生代理类,但是在调用JAVA的WebService时并没有这么简单,特别是对于SoapHeader的处理,通过C#添加Web引用方式访问JavaWebService的方法,除了string...
### SqlServer触发器调用WebService知识点详解 #### 一、SqlServer触发器简介 在了解如何通过Sql Server触发器调用WebService之前,我们首先需要对触发器有一个基本的认识。触发器是一种特殊的存储过程,它被定义...
然而,由于其自身不直接支持Web服务(WebService)的调用,开发者通常需要借助第三方库或者特定的技术来实现。本篇文章将详细讲解如何在C++中调用WebService,包括静态和动态方式,并探讨相关的源码实现。 首先,让...