ant 开发weblogic webservice.docx
《ant 开发weblogic webservice.docx》由会员分享,可在线阅读,更多相关《ant 开发weblogic webservice.docx(36页珍藏版)》请在冰豆网上搜索。
ant开发weblogicwebservice
基于WeblogicServer8.1ant工具开发WebService
时间:
2005-10-19
作者:
老Z
浏览次数:
7786
本文关键字:
WebLogicServer, WebServices, Web服务,Ant
文章工具
推荐给朋友
打印文章
前言:
本文不是专门讲述WebService技术的,读者在阅读本文之前需要具备一定的SOAP和WebService知识基础,同时对WeblogicServer的使用也应该熟悉。
如果要自己动手实践本文的例子,就需要安装WeblogicServer81,尽管本文是以weblogicserver81为测试环境,但是针对weblogicserver7下也是差不多的。
本文只是起个抛砖引玉的作用,如果想深入研究WebService的开发,还需要参考、学习相关的资料,包括WeblogicService的相关文档。
一、概述
在JBuilder中也支持开发基于weblogic的webservice,不过实际上在JBuilder下开发webservice也是基于ant任务来生成和构造webservice的。
但是,当初笔者在一个项目中使用JBuilder下自动生成构造ant脚本生成的webservice时碰到了一个问题,通过JBuilder生成的webservice,如果你的webservice调用接口中存在一个或者多个String类型参数的时候,在生成的wsdl文件中对该接口的参数命名不会按照你的后端组件对应方法中参数的名字,而是以string、string0、string1…等形式命名的。
而在那个项目中需要在Delphi环境中调用webservice,问题就出现了,string在Delphi中是关键词,产生了冲突,不能进行调用。
于是笔者决定采用自编写ant脚本的方式来生成和构造webservice来解决前面所述Delphi调用的问题。
BEAWeblogic提供了一些Ant任务,用来帮助开发者生成、构造一个Web服务的重要部件,(例如:
序列化类、客户端jar支持库、以及web-services.xml描述文件),并且把一个WeblogicWeb服务的所有部分打包成一个可部署的EAR文件。
BEAWeblogic所提供的Web服务Ant任务,支持从实现了WebService接口的普通JAVA源文件和EJBjar生成WebService部件,也支持从WSDL描述文件生成,同时支持基于http/https传输协议和JMS传输协议的WebService。
在这一节我们只讲述通过基于一个普通JAVA类作为后端组件来实现的WebService,传输协议使用http(基于https的方式将在后述关于WebService安全的部分讲述)。
二、使用Weblogicant工具生成WebService
我们先建立D:
\wls_ws_demo的工作目录,在此目录下分别建立src、build、ddfiles、webapp、test目录。
具体用途后文会涉及到。
首先我们编写一个实现了两个WebService接口的普通JAVA类:
packagecom.wnetw.ws.demo;
publicclassHelloWorldWS{
publicStringsayHello(){
return"HelloWorld!
";
}
publicStringwelcome(Stringname){
return"Hello"+name+",WelcometoWebService!
";
}
}
上面两个方法就不需要解释了,很简单。
把此类按封装包一致的路径放置在src目录下。
下面是本示例中ant脚本文件内的属性设置:
applications/HelloWorldWS.war"/>
applications/HelloWorldWS.ear"/>
clientslib/HelloWorldWS_clients.jar"/>
/bea"/>
上面的属性应该不是很难理解,关键的是对于beaweblogicserver安装目录和构造生成文件的路径说明,其次是对classpath的设置,需要用到的两个weblogic库是weblogic.jar和webservices.jar。
接着我们看看我们在本节中使用的Weblogic提供的Ant任务:
1、source2wsdd
source2wsddAnt任务最基本的功能是根据我们编写的普通JAVA类源文件生成一个WebService所必需的两个部件:
web-services.xml和.wsdl描述文件。
下面是针对上面HelloWorldWS.java对应的Ant脚本:
demo/HelloWorldWS.java"
ddFile="${build.dir}/wsddfiles/web-services.xml"
wsdlFile="${build.dir}/wsddfiles/HelloWorldWS.wsdl"
serviceURI="/HelloWorldWS">
属性说明
javaSource:
指定webservice的实现后端组件,这里是普通JAVA类com.wnetw.ws.demoHelloWorldWS.java。
注意属性里面是对源文件目录路径设置,而不是包路径。
ddFile:
生成的webservice部署描述符文件web-services.xml的存放路径。
wsdlFile:
生成的.wsdl文件存放的路径和名字。
serviceURI:
客户应用程序调用此Web服务的URL中的WebServiceURI部分。
注意:
必须以“/”开头。
例如:
/HelloWorldWS。
同时这个URI属性也会成为生成的web-services.xml部署描述符文件中元素的uri属性。
例如:
本机访问本webservice例子的url是http:
//localhost:
7001/WSDemo/HelloWorldWS
上面的serviceURI属性就指定了上述url中的/HelloWorldWS这一部分。
2、clientgen
clientgen可以用来生成JAVA环境下客户端应用调用一个WebService客户端jar支持库。
可以通过wsdl文件来生成,也可以通过一个包含webservice实现的ear文件来生成。
下面是clientgenant任务的脚本示例:
packageName="com.wnetw.ws.demo.client"
clientJar="${clients.lib}"
keepGenerated="false">
这里采用从前面source2wsdd任务生成的wsdl文件来生成客户端jar支持库。
通过wsdl属性指定。
3、war
这是ant提供的标准任务,这里与其他普通的war包有一点区别是,需要把web-services.xml文件打包到war中去。
说明:
需要准备web.xml,后面对于安全设置的时候还需要weblogic.xml文件,这里先都打包进去,这些文件都需要提前编辑准备好:
---Web.xml---
DOCTYPEweb-appPUBLIC"-//SunMicrosystems,Inc.//DTDWeb
Application2.3//EN""
wsdl
text/xml
---weblogic.xml---
xmlversion="1.0"encoding="UTF-8"?
>
DOCTYPEweblogic-web-appPUBLIC"-//BEASystems,Inc.//DTDWeb
Application7.0//EN""
/dtd/weblogic700-web-jar.dtd">
这个文件没设置,在后面关于安全的处理里面需要这里配置角色映射。
下面是warant脚本示例:
4、ear
这也是ant标准任务,需要注意的是必须提前编写application.xml文件,下面针对本文例子的application.xml文件:
DOCTYPEapplicationPUBLIC'-//SunMicrosystems,Inc.//DTDJ2EE
Application1.3//EN''
HelloWorldWS.war
WSDemo
说明:
context-root元素指定此WebService所在Web应用的应用根。
例如:
本机访问本webservice例子的url是http:
//localhost:
7001/
WSDemo/HelloWorldWS
上面的context-root元素就指定了上述url中的WSDemo这一部分。
下面是本文例子的earant任务脚本:
核心的ant任务说明完了,下面是完整的ant脚本文件:
---build_wls_all.xml---
HelloWorldWS.war"/>
HelloWorldWS.ear"/>
HelloWorldWS_clients.jar"/>
/bea"/>
genclient,genwar,genear"/>
"${build.dir}/classes">
demo/HelloWorldWS.java"
ddFile="${build.dir}/wsddfiles/web-services.xml"
wsdlFile="${build.dir}/wsddfiles/HelloWorldWS.wsdl"
serviceURI="/HelloWorldWS">
packageName="com.wnetw.ws.demo.client"
clientJar="${clients.lib}"
keepGenerated="false">
运行ant生成WebService:
打开命令行窗口,转到工作目录D:
\wls_ws_demo下,在此目录下先运行D:
\bea\weblogic81\server\bin\setWLSEnv.cmd(此cmd文件具体路径与你的weblogicplatform81实际安装目录相关)进行环境设置,然后运行:
D:
\bea\weblogic81\server\bin\ant.bat-buildfilebuild_wls_all.xml。
运行结束,出现“BUILDSUCCESSFUL”,那就代表OK了。
转到工作目录下的build目录,你就会看到HelloWorldWS.ear这个文件。
三、测试WebService
本节将讲述对前一节里生成的WebServiceHelloWorldWS进行测试。
启动WeblogicServer,进入WeblogicServer控制台,在Deployments->Applications下部署上节生成的HelloWorldWS.ear。
1、通过Weblogic自动生成的测试主页测试
部署成功后,在浏览器中输入http:
//localhost:
7001/WSDemo/HelloWorldWS访问WeblogicServer默认生成的上述HelloWorldWSWebService的测试主页。
如下图:
图上列出了HelloWorldWSWebService上的两个方法:
welcome和sayHello。
点击welcome连接进入wecome方法的测试页,如下图:
在上述页面输入“老Z”,提交后就会看到如下图页面:
测试的结果跟上节中的HelloWorldWS.java实现此方法的结果是一样的。
测试sayHello方法跟上面过程一样。
在测试主页中还能看到在JAVA环境下,基于clientgenant任务生成的jar客户端stub支持库调用此HelloWorldWSWeb服务的代码示例。
2、使用JAVA程序调用WebService
下面实际编写一个java测试程序来调用上述WebService。
---HelloWorldWSTest.java---
importcom.wnetw.was.dem