WebService大作业环境配置详细说明李法良Word下载.docx
- 文档编号:17215920
- 上传时间:2022-11-29
- 格式:DOCX
- 页数:15
- 大小:602.95KB
WebService大作业环境配置详细说明李法良Word下载.docx
《WebService大作业环境配置详细说明李法良Word下载.docx》由会员分享,可在线阅读,更多相关《WebService大作业环境配置详细说明李法良Word下载.docx(15页珍藏版)》请在冰豆网上搜索。
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,就可以在控制台看到服务调用返回的信息,如下图:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- WebService 作业 环境 配置 详细 说明 李法良