WebService大作业环境配置详细说明李法良Word下载.docx

上传人:b****6 文档编号:17215920 上传时间:2022-11-29 格式:DOCX 页数:15 大小:602.95KB
下载 相关 举报
WebService大作业环境配置详细说明李法良Word下载.docx_第1页
第1页 / 共15页
WebService大作业环境配置详细说明李法良Word下载.docx_第2页
第2页 / 共15页
WebService大作业环境配置详细说明李法良Word下载.docx_第3页
第3页 / 共15页
WebService大作业环境配置详细说明李法良Word下载.docx_第4页
第4页 / 共15页
WebService大作业环境配置详细说明李法良Word下载.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

WebService大作业环境配置详细说明李法良Word下载.docx

《WebService大作业环境配置详细说明李法良Word下载.docx》由会员分享,可在线阅读,更多相关《WebService大作业环境配置详细说明李法良Word下载.docx(15页珍藏版)》请在冰豆网上搜索。

WebService大作业环境配置详细说明李法良Word下载.docx

jdk1.6,然后点击确定,这样java_home变量就配置完成了。

2、classpath

可以参考java_home的配置过程,需要新建一个系统变量,不过classpath的变量名是classpath,变量值是.;

%JAVA_HOME%\lib;

%JAVA_HOME%\lib\tools.jar(要加.表示当前路径).

3、Path

Path变量在系统变量中已经存在,要修改path变量只需要选中path变量,点击编辑即可。

在变量值中加入如下内容:

%JAVA_HOME%\bin;

%JAVA_HOME%\jre\bin。

建议把JDKbin的路径放在原有path的最前面。

因为在%SystemRoot%\system32中还有一个java.exe/javaw.exe,这是Windows操作系统自带的那个JRE,如果我们自己装的话就不要用系统默认的那个JRE了,应该用我们自己装的。

所以我们把JDKbin的path放在最前面以便优先使用。

4、检查JDK环境变量是否配置正确

进入命令行窗口,方法是点击开始-运行-输入CMD后回车,你将看到如下界面:

然后输入javac或者java–version后敲回车,如果出现以下的响应则表示JDK配置成功。

配置Axis2

方法1:

如果你下载的是Axis2:

StandardBinaryDistribution,

你还需要下载建立工具ANT,地址是:

//ant.apache.org/bindownload.cgi

然后设置ANT的环境变量:

在系统变量中新建:

ANT_HOME,变量值为:

ant的根目录。

如:

C:

\antPath,加入:

%ANT_HOME%\bin然后你进入C:

\axis2\webapp的Axis2的如上的目录中,在命令行中运行命令:

ant。

在C:

\axis2\dist目录中,你可以看到axis2.war文件。

方法2:

(强烈推荐大家使用以下方法来配置Axis2)

直接下载Axis2的WAR版本http:

直接放在Tomcat6.0安装目录的webapps文件夹下,然后启动tomcat,Axis2自动完成部署。

如下图所示:

(1)将axis2.war放入webapps文件夹中

(2)运行Tomcat6.0,点击Start即可

(3)在上一步中成功启动Tomcat之后,axis2会自动完成部署,并在webapps文件夹下生成axis2子文件夹

(4)打开浏览器,在地址栏输入http:

//localhost:

8080/axis2出现Axis2欢迎界面,点击service可以看到目前所有的服务。

到此为止,配置工作就全部完成了。

一个简单的webservice实例

在介绍实例之前,我们要先完成一些准备工作,首先打开Eclipse开发工具,点击菜单栏的Window然后选中Preferences,在弹出的对话框中依次点开Java、BuildPath、选中UserLibraries,然后点右边的New按钮,在弹出的对话框中输入axis2,选中Systemlibrary(addedtothebootclasspath),然后点OK,接着选中刚创建好的userlibrary(即axis2),点右边的AddJARs按钮,(还记得之前我们配置axis2时通过axis2.war直接部署并生成了一个axis2的文件夹吗?

这里我们要用到它)将axis2文件夹内WEB-INF下的lib文件中的所有文件包含进去。

整个过程如下图所示:

(1)打开Eclipse

(2)添加axis2用户库

(3)添加webapps\axis2\WEB-INF\lib下的所有文件到axis2用户库

这个axis2用户库有什么用呢?

其实我们可以注意到,axis2用户库里包含的实质上是封装了axis2的各种功能和类的函数库,我们在编写服务端和客户端代码的时候直接在工程里引用axis2用户库,这样就可以使用axis2提供的各种功能函数以及类、类型等等。

如果不样的话,编译器将无法识别诸如OMElement、OMFactory这样的类名。

当然,你也可以将webapps\axis2\WEB-INF\lib的所有文件拷贝到你建立的工程的lib文件里,但是当你有多个工程的时候,你将拷贝多份文件至工程中,耗时耗力,是不明智的。

接下来介绍两种方式来发布服务。

方式一:

用POJO实现0配置的WebService

对于用Java实现的服务程序给人的印象就是需要进行大量的配置,不过这一点在Axis2中将被终结。

在Axis2中不需要进行任何的配置,就可以直接将一个简单的POJO发布成WebService。

其中POJO中所有的public方法将被发布成WebService方法。

下面我们来实现一个简单的POJO,代码如下:

public 

class 

SimpleService

{

 

String 

getGreeting(String 

name)

return 

"

你好 

name;

int 

getPrice()

new 

java.util.Random().nextInt(1000);

}

在SimpleService类中有两个方法,由于这两个方法都是public方法,因此,它们都将作为WebService方法被发布。

编译SimpleService类后,将SimpleService.class文件放到<

Tomcat安装目录>

\webapps\axis2\WEB-INF\pojo目录中(如果没有pojo目录,则建立该目录)。

现在我们已经成功将SimpleService类发布成了WebService。

在浏览器地址栏中输入如下的URL:

8080/axis2/services/listServices

这时当前页面将显示所有在Axis2中发布的WebService,如下图所示。

通过上图可以看出,刚刚发布的SimpleService有两个方法,分别是getPrice和getGreeting,服务的EPR地址为:

8080/axis2/services/SimpleService,如果想查阅该服务的wsdl文档,可以通过直接点击标题SimpleService或者在浏览器地址框内输入http:

8080/axis2/services/SimpleService?

wsdl,你将看到如下图所示的信息:

在编写、发布和测试0配置的WebService时应注意如下几点:

1. 

POJO类不能使用package关键字声明包。

2. 

Axis2在默认情况下可以热发布WebService,也就是说,将WebService的.class文件复制到pojo目录中时,Tomcat不需要重新启动就可以自动发布WebService。

如果想取消Axis2的热发布功能,可以打开<

\webapps\axis2\WEB-INF\conf\axis2.xml,找到如下的配置代码:

<

parameter 

name="

hotdeployment"

>

true<

/parameter>

将true改为false即可。

要注意的是,Axis2在默认情况下虽然是热发布,但并不是热更新,也就是说,一旦成功发布了WebService,再想更新该WebService,就必须重启Tomcat。

这对于开发人员调试WebService非常不方便,因此,在开发WebService时,可以将Axis2设为热更新。

在axis2.xml文件中找到<

parametername="

hotupdate"

false<

,将false改为true即可。

3. 

发布WebService的pojo目录只是默认的,如果读者想在其他的目录发布WebService,可以打开axis2.xml文件,并在<

axisconfig>

元素中添加如下的子元素:

deployer 

extension="

.class"

directory="

my"

class="

org.apache.axis2.deployment.POJODeployer"

/>

上面的配置允许在<

\webapps\axis2\WEB-INF\my目录中发布WebService。

例如,将本例中的SimpleService.class复制到my目录中也可以成功发布(但要删除pojo目录中的SimpleService.class,否则WebService会重名)。

方式二:

使用service.xml文件发布WebService

用Axis2实现WebService,虽然可以将POJO类放在axis2\WEB-INF\pojo目录中直接发布成WebService,这样做不需要进行任何配置,但这些POJO类不能在任何包中。

这似乎有些不方便,为此,Axis2也允许将带包的POJO类发布成WebService。

先实现一个POJO类,代码如下:

package 

service;

MyService

您好 

void 

update(String 

data)

System.out.println("

data 

已经更新"

);

这个类有两个方法,这两个方法都需要发布成WebService方法。

这种方式和直接放在pojo目录中的POJO类不同。

要想将MyService类发布成WebService,需要一个services.xml文件,这个文件需要放在META-INF目录中,该文件的内容如下:

service 

myService"

description>

Web 

Service例子

/description>

ServiceClass"

service.MyService 

messageReceivers>

messageReceiver 

mep="

//www.w3.org/2004/08/wsdl/in-out"

org.apache.axis2.rpc.receivers.RPCMessageReceiver"

//www.w3.org/2004/08/wsdl/in-only"

org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver"

/messageReceivers>

/service>

其中<

service>

元素用于发布WebService,一个<

元素只能发布一个WebService类,name属性表示WebService名,如下面的URL可以获得这个WebService的WSDL内容:

8080/axis2/services/myService?

wsdl 

其中name属性名就是上面URL中"

?

和"

/"

之间的部分。

元素表示当前WebService的描述,<

parameter>

元素用于设置WebService的参数,在这里用于设置WebService对应的类名。

在这里最值得注意的是<

元素,该元素用于设置处理WebService方法的处理器。

例如,getGreeting方法有一个返回值,因此,需要使用可处理输入输出的RPCMessageReceiver类,而update方法没有返回值,因此,需要使用只能处理输入的RPCInOnlyMessageReceiver类。

使用这种方式发布WebService,必须打包成.aar文件,..aar文件实际上就是改变了扩展名的.jar文件。

在现在建立了两个文件:

MyService.java和services.xml。

将MyService.java编译,生成MyService.class。

services.xml和MyService.class文件的位置如下:

D:

\ws\service\MyService.class

\ws\META-INF\services.xml

在windows控制台中进入ws目录,并输入如下的命令生成.aar文件(实际上,.jar文件也可以发布webservice,但axis2官方文档中建议使用.aar文件发布webservice):

jarcvfws.aar.jarcvfAxisTest.aar.

最后将ws.aar文件复制到<

\webapps\axis2\WEB-INF\services目录中,启动Tomcat后,就可以调用这个WebService了。

最后,我们用java写一个客户端来调用我们刚才发布的SimpleService服务。

首先,在Eclipse中创建一个新的JavaProject,取名为test,建好后右键点击test工程,选择Properties,在弹出的对话框中选择JavaBuildPath,接着点Libraries选项卡,然后点击AddLibrary..按钮,在弹出的对话框中选中UserLibrary并点Next,在新的对话框中将axis2前面的勾打上,点确定即完成了对axis2用户库的引用。

接着在test工程的src文件夹下新建包client,在client下新建java文件,取名为RPPClient.java,然后添加如下代码:

packageclient;

importjavax.xml.namespace.QName;

importorg.apache.axis2.addressing.EndpointReference;

importorg.apache.axis2.client.Options;

importorg.apache.axis2.rpc.client.RPCServiceClient;

publicclassRPCClient

publicstaticvoidmain(String[]args)throwsException

{

//使用RPC方式调用WebService

RPCServiceClientserviceClient=newRPCServiceClient();

Optionsoptions=serviceClient.getOptions();

//指定调用WebService的URL

EndpointReferencetargetEPR=newEndpointReference(

"

8080/axis2/services/SimpleService"

options.setTo(targetEPR);

//指定getGreeting方法的参数值

Object[]opAddEntryArgs=newObject[]{"

超人"

};

//指定getGreeting方法返回值的数据类型的Class对象

Class[]classes=newClass[]{String.class};

//指定要调用的getGreeting方法及WSDL文件的命名空间

QNameopAddEntry=newQName("

//ws.apache.org/axis2"

"

getGreeting"

//调用getGreeting方法并输出该方法的返回值

System.out.println(serviceClient.invokeBlocking(opAddEntry,opAddEntryArgs,classes)[0]);

//下面是调用getPrice方法的代码,这些代码与调用getGreeting方法的代码类似

classes=newClass[]{int.class};

opAddEntry=newQName("

getPrice"

System.out.println(serviceClient.invokeBlocking(opAddEntry,newObject[]{},classes)[0]);

}

编辑完后点保存,然后点Run或者Ctrl+F11,就可以在控制台看到服务调用返回的信息,如下图:

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

当前位置:首页 > 初中教育 > 理化生

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

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