1、快速上手指南 基于Eclipse Axis2 插件的Web Service开发axis2创建web service(一) axis2 是新一代的web service开发工具,它会让你的web service开发变得轻松,快捷。下面让我们以一个实际的例子来体验一下。首先,工欲善其事,必先利其器。就让我们先做好一些必备的准备工作吧。1.下载axis2 的2进制的包和war,现在的最新版本是1.4.1 发布时间是2008-8-25 地址分别是: 2.把下载后的war放入tomcat的webapps目录里,然后启动tomcat,这样war包就会自动解压为目录axis2在浏览器中输入http:/loc
2、alhost:8080/axis2/,如果一切正常你会看到下面的画面3,就开始准备一下axis2的eclispe的插件了。axis2的eclispe插件分为2个,一个是帮助我们生成aar文件的,另一个是帮我们用wsdl文件生成stub代码的。下载地址是http:/www.apache.org/dyn/mirrors/mirrors.cgi/ws/axis2/tools/1_4_1/axis2-eclipse-service-archiver-wizard.ziphttp:/www.apache.org/dyn/mirrors/mirrors.cgi/ws/axis2/tools/1_4_1/a
3、xis2-eclipse-codegen-wizard.zip下载完2个压缩文件后,可以直接把解压后的文件拷贝到plugins目录中,也可以在links目录中写文件路径的方式来安装插件,安装完插件后,打开eclipse,在package explorer 中点击右键-选择new-other如果安装正确你会看到这样准备工作就都做好了。接下来就是正式开发了。axis2创建web service(二) 工具都已经准备齐全了。我们来动手做一个小例子来小试牛刀!这一节我们先利用axis2来发布一个web service 的服务,然后在下一节我们做一客户端来调用这个服务。我们的服务很简单的,就是输入一个字
4、符串,然后打印出一段字符串。代码很简单,主要是测试用。Java代码 1. packagecom.deltaj.server; 2. 3. publicclassSimpleServer 4. 5. /* 6. *简单的测试方法 7. * 8. */9. publicStringsimpleMethod(Stringname) 10. returnname+SaythisisaSimplemethod-; 11. 12. 13. package com.deltaj.server;public class SimpleServer /* * 简单的测试方法 * */ public String
5、simpleMethod(String name) return name + Say this is a Simple method -; 主要的过程就是如何利用axis2的eclispe插件来发布这个服务啦。1。在eclispe 的package Explorer 中点击右键,在菜单中选择新建-other.-Axis2 Service Archiver2.然后点击next进入了类选择页面,在这个页面中的ClassFile Location选择框中选择类所在的文件夹。3.点击next之后进入了选择 wsdl文件,这里我们选择skip wsdl。4. 点击next之后,进入的是选择jar文件的
6、页面,这里我们没有外部的jar,所以点击next直接跳过这个页面。4.点击next之后,进入的是选择xml页面,这里我们选择的是自动生成xml,也就是勾选Generate the service xml automatically这一项5.点击next之后,进入的是生成xml文件的页面,在service name 里填写这个服务所起的名字,这里我起名为simpleServer,然后在class name 中填写要发布的类,这里一定要写全路径,写好后就可以点击load 按钮,如果一切ok的话,你会看到如下画面6 点击next 后,进入的是输出artiver文件的页面,先要在output File
7、location 中选择要输出的路径, 在output File Name中输入artiver文件的名称。我起的名字是simpleServer7.点击finish ,如果看到如下的画面,恭喜你,服务发布成功啦。8.接下来,我们就可以把这个aar文件放入tomcat中发布,首先把生成的aar文件拷贝到tomcat目录中的axis2项目的service目录中位置如图。9.接下来启动tomcat,在地址栏中输入http:/localhost:8080/axis2,你会看到axis2的欢迎画面10.点击Service连接,你会看到发布的服务列表。这里面就能看到我们发布的simpleService11.
8、点击我们的服务simpleServer的连接,我们会看到。至此,服务发布成功。axis2创建web service(三) 这节我们就来写一个客户端来调用一下这个服务。主要关注一下如何用elispe的axis2的插件来生成stub代码。1.在eclispe 的package Explorer 中点击右键,在菜单中选择新建-other.-Axis2 Code Generator2.点击next,进入下一个页面,选择从wsdl文件来产生java文件。3. 点击next,然后选择wsdl文件,注意此处要填写上一节我们4.点击next,进入设置页面,这里我们就用默认的设置。5.点击next,选择输出文件
9、的路径。6.点击next,如果看到这个页面,恭喜你已经生成代码成功。7.在package Explorer中刷新一下项目,然后你发现出现2个新的文件SimpleServerStub和SimpleServerCallbackHandler 。打开SimpleServerStub你会惊喜的发现。著名的小红叉一个接一个的这是因为没有axis2的类包。我们可以在下载的axis2-1.4.1-bin中找到lib包,把其中的jar都加入我们的工程中。然后重新编译一下工程,这时我们发现SimpleServerStub还是有几个小红叉。这个是因为这个插件有个小bug。生成的代码没有实现序列化方法。我们可以自己
10、来加上,在小红叉上点一下,弹出一个小菜单,选择Add unimplemented methods .8.Java代码 1. /* 2. *调用发布的服务。 3. * 4. */5. publicclassSimpleClient 6. 7. publicstaticvoidmain(Stringargs)throwsException 8. 9. /初始化桩文件 10. SimpleServerStubstub=newSimpleServerStub(); 11. /初始化SimpleMethod方法。 12. SimpleServerStub.SimpleMethodrequest=newS
11、impleServerStub.SimpleMethod(); 13. /调用simpleMethod的setName方法。 14. request.setName(zt); 15. / 16. System.out.println(stub.simpleMethod(request).get_return(); 17. 18. 19. 20. /* 调用发布的服务。* */public class SimpleClient public static void main(String args) throws Exception/初始化桩文件SimpleServerStub stub = n
12、ew SimpleServerStub();/初始化SimpleMethod方法。SimpleServerStub.SimpleMethod request = new SimpleServerStub.SimpleMethod();/调用simpleMethod的setName方法。request.setName(zt);/System.out.println(stub.simpleMethod(request).get_return(); 如果一切正常,你就会看到结果log4j:WARN No appenders could be found for logger (org.apache.
13、axis2.description.AxisService).log4j:WARN Please initialize the log4j system properly.ztSay this is a Simple method -。调用服务成功。这是个简单的例子,下节我们再做一个复杂一点的例子,来更好的学习axis2axis2创建web service(四) web serviceWebBeanlog4jEclipseQQ 上节我们做了一个简单的例子,调用的服务里的方法只是简单返回一个字符串,这次我们要做一个复杂点的例子,调用服务里的方法返回一个java Bean对象。 1. 首先做一个简
14、单的java bean ,代码如下Java代码 1. packagecom.deltaj.server; 2. 3. publicclassPersion 4. /姓名 5. privateStringname; 6. /年龄 7. privateintage; 8. 9. publicStringgetName() 10. returnname; 11. 12. 13. publicvoidsetName(Stringname) 14. this.name=name; 15. 16. 17. publicintgetAge() 18. returnage; 19. 20. 21. publi
15、cvoidsetAge(intage) 22. this.age=age; 23. 24. 25. package com.deltaj.server;public class Persion / 姓名 private String name; / 年龄 private int age; public String getName() return name; public void setName(String name) this.name = name; public int getAge() return age; public void setAge(int age) this.ag
16、e = age; 2.做一个服务,里面只发布一个方面,这个方法返回这个bean。Java代码 1. packagecom.deltaj.server; 2. 3. publicclassBeanServer 4. 5. /* 6. *简单的测试方法 7. * 8. */9. publicPersiontestMethod(Stringname,intage) 10. Persionpersion=newPersion(); 11. persion.setName(name); 12. persion.setAge(age); 13. returnpersion; 14. 15. package
17、 com.deltaj.server;public class BeanServer /* * 简单的测试方法 * */ public Persion testMethod(String name, int age) Persion persion = new Persion(); persion.setName(name); persion.setAge(age); return persion; 3.按照第二节的做法,把这个服务发布出来。 4.同样按照第三节的方法,用这个wsdl来生成stub代码。5.然后我们开始做一个方法来调用一下这个服务。Java代码 1. packagecom.de
18、ltaj.client; 2. 3. importcom.deltaj.server.TestServerStub; 4. 5. publicclassBeanClient 6. publicstaticvoidmain(Stringargs)throwsException 7. /初始化桩文件 8. TestServerStubstub=newTestServerStub(); 9. /初始化TestMethod方法。 10. TestServerStub.TestMethodrequest=newTestServerStub.TestMethod(); 11. /设置bean的属性值。 1
19、2. request.setName(delta); 13. request.setAge(20); 14. / 15. System.out.println(Thenameis:+stub.testMethod(request).get_return().getName(); 16. System.out.println(Theageis:+stub.testMethod(request).get_return().getAge(); 17. 18. 19. package com.deltaj.client;import com.deltaj.server.TestServerStub;p
20、ublic class BeanClient public static void main(String args) throws Exception / 初始化桩文件 TestServerStub stub = new TestServerStub(); / 初始化TestMethod方法。 TestServerStub.TestMethod request = new TestServerStub.TestMethod(); / 设置bean的属性值。 request.setName(delta ); request.setAge(20); / System.out.println(Th
21、e name is:+stub.testMethod(request).get_return().getName(); System.out.println(The age is:+stub.testMethod(request).get_return().getAge(); 6.如果按照这里说的做的话,你会看到log4j:WARN No appenders could be found for logger (org.apache.axis2.description.AxisService).log4j:WARN Please initialize the log4j system properly.The name is:delta The age is:20
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1