axisWebService开发指南Word下载.docx

上传人:b****5 文档编号:19829983 上传时间:2023-01-10 格式:DOCX 页数:74 大小:128.95KB
下载 相关 举报
axisWebService开发指南Word下载.docx_第1页
第1页 / 共74页
axisWebService开发指南Word下载.docx_第2页
第2页 / 共74页
axisWebService开发指南Word下载.docx_第3页
第3页 / 共74页
axisWebService开发指南Word下载.docx_第4页
第4页 / 共74页
axisWebService开发指南Word下载.docx_第5页
第5页 / 共74页
点击查看更多>>
下载资源
资源描述

axisWebService开发指南Word下载.docx

《axisWebService开发指南Word下载.docx》由会员分享,可在线阅读,更多相关《axisWebService开发指南Word下载.docx(74页珍藏版)》请在冰豆网上搜索。

axisWebService开发指南Word下载.docx

/**

*<

b>

function:

<

/b>

jws的axisWebService

*@authorhoojo

*@createDateDec15,201017:

03:

49PM

*@fileHelloWorldService.java

*@packagecom.hoo.service

*@projectAxisWebService

*@blog

*@emailhoojo_@

*@version1.0

*/

publicclassHelloWorldService{

publicStringsayHello(Stringname,intage){

returnname+"

say:

helloworld!

[axis]myageis"

+age;

}

}

4、复制HelloWorldService.java到我们刚才复制的axis文件夹下即可;

也就是tomcat下的webapps下的axis下即可;

注意:

还有重要的一般就是要将这个java文件中的包名去掉,并且将这个文件重命名为HelloWorldService.jws;

如果带包名的话,请求后编译的class将会在包路径下,这样我们在全球当前jws的时候就会出现找不到class,详细的你可以到发布在tomcat下的工程看看WEB-INF目录下的jwsClass就一目了然了。

上面的工作完成后,启动tomcat服务器,访问http:

8080/axis/HelloWorldService.jws

你会看到:

ThereisaWebServicehere

ClicktoseetheWSDL

如果你和我看到的是一样的,就证明你已经成功的部署了一个axis1.x的webService。

然后我们点击下就可以看到wsdl的xml文件了,内容如下:

?

xmlversion="

1.0"

encoding="

UTF-8"

?

>

-<

wsdl:

definitionstargetNamespace="

http:

8080/axis/HelloWorldService.jws"

xmlns:

apachesoap="

//xml.apache.org/xml-soap"

impl="

intf="

soapenc="

//schemas.xmlsoap.org/soap/encoding/"

wsdl="

//schemas.xmlsoap.org/wsdl/"

wsdlsoap="

//schemas.xmlsoap.org/wsdl/soap/"

xsd="

//www.w3.org/2001/XMLSchema"

!

--

WSDLcreatedbyApacheAxisversion:

1.4

BuiltonApr22,2006(06:

55:

48PDT)

 

-->

messagename="

sayHelloResponse"

<

partname="

sayHelloReturn"

type="

xsd:

string"

/>

/wsdl:

message>

sayHelloRequest"

name"

age"

int"

portTypename="

HelloWorldService"

operationname="

sayHello"

parameterOrder="

nameage"

inputmessage="

impl:

name="

outputmessage="

operation>

portType>

bindingname="

HelloWorldServiceSoapBinding"

wsdlsoap:

bindingstyle="

rpc"

transport="

//schemas.xmlsoap.org/soap/http"

operationsoapAction="

"

inputname="

bodyencodingStyle="

namespace="

//DefaultNamespace"

use="

encoded"

input>

outputname="

output>

binding>

servicename="

HelloWorldServiceService"

portbinding="

addresslocation="

port>

service>

definitions>

分析下wsdl的xml文件内容:

targetNamespace=http:

是我们部署的webservice命名空间,也就是我们访问的webService路径。

<

是返回值的信息,sayHelloResponse代表响应,即返回值,type是返回值的类型

请求方法参数信息,sayHelloRequest即请求,part是参数parameter,type是参数的类型

<

portType的name是当前webService的名称,operation是一个操作,即可以调用的方法。

name就是方法名称了,parameterOrder是参数,input输入即传入参数,output输出即返回的值;

webService的名称和绑定的信息,以及访问的url地址。

5、下面编写客户端代码

代码如下:

packagecom.hoo.client;

importjava.rmi.RemoteException;

importjavax.xml.namespace.QName;

importjavax.xml.rpc.ServiceException;

importorg.apache.axis.client.Call;

importorg.apache.axis.client.Service;

publicclassHelloWorldClient{

/**

jwsaxisWebService客户端

*@createDate2010-12-15下午05:

10:

28

*@paramargs

*@throwsServiceException

*@throwsRemoteException

publicstaticvoidmain(String[]args)throwsServiceException,RemoteException{

//webService访问地址

//Stringurl="

;

Stringurl="

//127.0.0.1:

//创建服务

Serviceservice=newService();

//创建调用句柄

Callcall=(Call)service.createCall();

//设置请求地址

call.setTargetEndpointAddress(url);

/**

*设置调用的方法和方法的命名空间;

*因为这里是手动发布到webroot目录下的,所以命名空间和请求地址一致

*当然null也可以,因为本身它就没有设置命名空间,一般方法的命名空间是

*包名倒写组成,如com.hoo.service,ns=

*/

call.setOperationName(newQName(null,"

));

*用call调用sayHello方法,设置请求的参数,返回的就是返回值了

Stringresult=(String)call.invoke(newObject[]{"

jack"

99});

System.out.println(result);

分析上面的代码

url是根据xml文件中的wsdlsoap:

addresslocation的信息得到的,命名空间和方法名称是根据

8080/axis/HelloWorldJWS.jws"

的信息得到的,而请求参数和返回值的详细信息是在

HelloWorldJWS"

里可以很详细的看到。

至于代码的call.invoke是java中反射机制,不懂的建议看看jdk文档java.lang.reflect包下的内容。

运行上面的代码就可以看到控制台输出:

jacksay:

[axis]myageis99

好了,axis的就完成了,下面我们不用官方的axis的工程,我们写一个自己的AxisWebService工程,然后发布的tomcat的webapps中看看。

6、刚才copy了lib下的jar包,现在要copy下web.xml中的内容,去掉里面的AdminServlet这个配置,其他的都可保留。

然后像刚才一样,将HelloWorldService.java复制到webroot目录下,去掉包名,并且修改后缀为HelloWorldService.jws即可。

(如果有兴趣可以看看,发布在tomcat目录下的当前工程的web-inf目录,看看里面是否多了些东西)最后发布当前web工程,访问http:

8080/AxisWebService/HelloWorldService.jws,如果看到和刚才一样的界面,证明你快成功了。

点击链接看到wsdl的xml就成功了。

好了,还没有完。

看看web.xml中的配置,你大概就知道为什么了。

web.xml中最主要的文件就是org.apache.axis.transport.http.AxisServlet,它就是webService的中央控制器;

即配置jws的后缀也在web.xml中定义的,在看看还有services/*,这就表明上面的访问路径也可以是这样的:

8080/AxisWebService/services/HelloWorldService

当然如果要这样写就需要用wsdd的发布方式,详细请看下文!

参考文档:

//ws.apache.org/axis/java/user-guide.html

二、用wsdd(WebServicesDeploymentDescriptor)方式发布WebService

wsdd方法比jws方法要稍微复杂些,但一定程度上比jws发布的方法要灵活。

1、首先在AxisWebService工程创建一个java类,里面写简单的2个方法getName、getAge,代码如下:

wsdd发布模式的axisWebService

24:

35PM

*@fileHelloWorldWSDD.java

publicclassHelloWorldWSDD{

publicStringgetName(Stringname){

return"

yourname:

"

+name;

publicintgetAge(intage){

returnage+10;

2、如果用wsdd方法首先需要定制我们的wsddxml文件,这里命名为deploy.wsdd,创建在当前web工程的WEB-INF目录下,代码如下:

deploymentxmlns="

//xml.apache.org/axis/wsdd/"

java="

//xml.apache.org/axis/wsdd/providers/java"

HelloWorldWSDD"

provider="

java:

RPC"

parametername="

className"

value="

com.hoo.service.HelloWorldWSDD"

--*代表所有的方法都暴露-->

allowedMethods"

*"

scope"

request"

/service>

/deployment>

service标签代表一个WebService服务,HelloWorldWSDD就是当前WebService的名称;

provider是java的WebService类型,分别有:

RPC、Document、Wrapped、Message、EJB、RMI;

有兴趣的可以看看org.apache.axis.providers.java包下面的WebService的实现类或是文档;

parameter的参数className代表当前WebService的class类路径;

allowedMethods代表暴露的方法,那些方法在客户端可以调用;

这个是当前WebService的作用域,它有3个值,分别是:

request、session、application。

request代表为每个WebServiceSOAP的请求都产生一个服务对象,和Spring的scope很像,在服务请求频繁的话会消耗很多资源。

session是给每个调用当前WebService的客户端创建一个服务对象

application是个当前所有的请求创建一个服务对象

3、写完配置后,就需要用axis提供的AdminClient工具类帮我们发布WebService,直到生成server-config.wsdd,步骤如下:

运行

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 城乡园林规划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1