关于eclipse+ tomcat 6.0+axis2发布webservice简单实例补充

axis2创建web service(一)

关键字: axis2创建web service

                               axis2创建web service(一)

                                                     作者:张涛 

axis2 是新一代的web service开发工具,它会让你的web service开发变得轻松,快捷。下面让我们以一个实际的例子来体验一下。

首先,工欲善其事,必先利其器。就让我们先做好一些必备的准备工作吧。

 

1.下载axis2 2进制的包和war,现在的最新版本是1.4.1 发布时间是2008-8-25

地址分别是:http://apache.mirror.phpchina.com/ws/axis2/1_4_1/axis2-1.4.1-bin.zip

                  http://apache.mirror.phpchina.com/ws/axis2/1_4_1/axis2-1.4.1-war.zip

 

2.把下载后的war放入tomcatwebapps目录里,然后启动tomcat,这样war包就会自动解压为目录axis2

在浏览器中输入http://localhost:8080/axis2/ ,如果一切正常你会看到下面的画面

 




 
 3
,就开始准备一下axis2eclispe的插件了。axis2eclispe插件分为2个,一个是帮助我们生成aar文件的,另一个是帮我们用wsdl文件生成stub代码的。

下载地址是

http://www.apache.org/dyn/mirrors/mirrors.cgi/ws/axis2/tools/1_4_1/axis2-eclipse-service-archiver-wizard.zip

 

http://www.apache.org/dyn/mirrors/mirrors.cgi/ws/axis2/tools/1_4_1/axis2-eclipse-codegen-wizard.zip

下载完2个压缩文件后,可以直接把解压后的文件拷贝到plugins目录中,也可以在links目录中写文件路径的方式来安装插件,安装完插件后,打开eclipse,在package explorer 中点击右键--->选择new---->other

如果安装正确你会看到




 

axis2创建web service(二)

关键字: axis2创建web service

工具都已经准备齐全了。我们来动手做一个小例子来小试牛刀!

这一节我们先利用axis2来发布一个web service 的服务,然后在下一节我们做一客户端来调用这个服务。

我们的服务很简单的,就是输入一个字符串,然后打印出一段字符串。

代码很简单,主要是测试用。

 

Java代码

  1. package com.deltaj.server;   
  2.   
  3. public class SimpleServer {   
  4.   
  5.     /**  
  6.      * 简单的测试方法  
  7.      *   
  8.      */  
  9.     public String simpleMethod(String name) {   
  10.         return name + "Say this is a Simple method ^-^";   
  11.     }   
  12.   
  13. }  

package com.deltaj.server;

 

public class SimpleServer {

 

/**

 * 简单的测试方法

 *

 */

public String simpleMethod(String name) {

  return name + "Say this is a Simple method ^-^";

}

 

}

 

主要的过程就是如何利用axis2eclispe插件来发布这个服务啦。

 

1。在eclispe package Explorer 中点击右键,在菜单中选择新建--->other...----->Axis2 Service Archiver

 

注意这里的路径是你编写的类的被eclipse编译好的类。例如D:/work/demo/build/classes

2. 然后点击next进入了类选择页面,在这个页面中的Class File Location选择框中选择类所在的文件夹。 


 3.
点击next之后进入了选择 wsdl文件,这里我们选择skip wsdl

 

 

4. 点击next之后,进入的是选择jar文件的页面,这里我们没有外部的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 location 中选择要输出的路径,

   output  File Name中输入artiver文件的名称。我起的名字是simpleServer


 7.
点击finish ,如果看到如下的画面,恭喜你,服务发布成功啦。

 

8.接下来,我们就可以把这个aar文件放入tomcat中发布,首先把生成的aar文件拷贝到tomcat目录中的axis2项目的service目录中位置如图。



 

9.接下来启动tomcat,在地址栏中输入http://localhost:8080/axis2 ,你会看到axis2的欢迎画面

 

 

10.点击Service连接,你会看到发布的服务列表。这里面就能看到我们发布的simpleService

这个网址很重要,它是利用axis2 code generate 使用到的


 11.
点击我们的服务simpleServer的连接,我们会看到。至此,服务发布成功。

 

 

 

axis2创建web service(三)

关键字: axis2创建web service

       这节我们就来写一个客户端来调用一下这个服务。主要关注一下如何用elispeaxis2的插件来生成stub代码。

1.eclispe package Explorer 中点击右键,在菜单中选择新建--->other...----->Axis2 Code Generator




 

2.点击next,进入下一个页面,选择从wsdl文件来产生java文件。

 

这里的网址就是上面生成的网址

3. 点击next,然后选择wsdl文件,注意此处要填写上一节我们

 4.点击next,进入设置页面,这里我们就用默认的设置。

 

如果不出现sussessful而是出现java.lang.reflect.Invocation TargetException 错误,1、去把eclipse目录下的plugin目录下Axis2_Codegen_Wizard_1.4.0文件夹改为1.4.0(它原来的名字是Axis2_Codegen_Wizard_1.3.0);2、把Axis2_Codegen_Wizard_1.4.0文件夹下的plugin.xml打开,把<plugin   id="Axis2_Codegen_Wizard"   name="Axis2 Codegen Wizard Plug-in"   version="1.4.0"(原来是1.3.0

3、把axis2-1.4.1文件夹下的backport-util-concurrent-3.1.jargeronimo-stax-api_1.0_spec-1.0.1.jar放入Axis2_Codegen_Wizard_1.4.0文件下的lib中,而且把外层的plugin.xml打开修改增加在runtime中增加

<library name="lib/geronimo-stax-api_1.0_spec-1.0.1.jar">

        <export name="*"/>

</library>

<library name="lib/backport-util-concurrent-3.1.jar">

<export name="*"/>

</library>

5.  点击next,选择输出文件的路径。

 

6.点击next,如果看到这个页面,恭喜你已经生成代码成功。

 

7.package Explorer中刷新一下项目,然后你发现出现2个新的文件SimpleServerStubSimpleServerCallbackHandler 。打开SimpleServerStub你会惊喜的发现。著名的小红叉一个接一个的

这是因为没有axis2的类包。我们可以在下载的axis2-1.4.1-bin中找到lib包,把其中的jar都加入我们的工程中。

然后重新编译一下工程,这时我们发现SimpleServerStub还是有几个小红叉。这个是因为这个插件有个小bug

上面的文件在你指定的输出的路径里,不是刷新出来的。你得把文件拷贝您的工程

生成的代码没有实现序列化方法。我们可以自己来加上,在小红叉上点一下,弹出一个小菜单,选择

Add unimplemented methods .



 

8.

Java代码

  1. /**  
  2.  * 调用发布的服务。  
  3.  *   
  4.  */  
  5. public class SimpleClient {   
  6.     
  7. 就是生成的stub

     public static void main(String[] args) throws Exception{   
  8.      
  9.   //初始化桩文件   
  10.   SimpleServerStub stub = new SimpleServerStub();   
  11.   //初始化SimpleMethod方法。   
  12.   SimpleServerStub.SimpleMethod request = new  SimpleServerStub.SimpleMethod();   
  13.   //调用simpleMethodsetName方法。   
  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 = new SimpleServerStub();

  //初始化SimpleMethod方法。

  SimpleServerStub.SimpleMethod request = new  SimpleServerStub.SimpleMethod();

  //调用simpleMethodsetName方法。

  request.setName("zt");

  //

  System.out.println(stub.simpleMethod(request).get_return());

  

  

 }

}

   如果一切正常,你就会看到结果

log4j:WARN No appenders could be found for logger (org.apache.axis2.description.AxisService).
log4j:WARN Please initialize the log4j system properly.
ztSay this is a Simple method ^-^

调用服务成功。这是个简单的例子,下节我们再做一个复杂一点的例子,来更好的学习axis2

 

axis2创建web service(四)

关键字: axis2创建web service

      上节我们做了一个简单的例子,调用的服务里的方法只是简单返回一个字符串,这次我们要做一个复杂点的例子,调用服务里的方法返回一个java Bean对象。

      

       1. 首先做一个简单的java bean ,代码如下

Java代码

  1. package com.deltaj.server;   
  2.   
  3. public class Persion {   
  4.     // 姓名   
  5.     private String name;   
  6.     // 年龄   
  7.     private int age;   
  8.   
  9.     public String getName() {   
  10.         return name;   
  11.     }   
  12.   
  13.     public void setName(String name) {   
  14.         this.name = name;   
  15.     }   
  16.   
  17.     public int getAge() {   
  18.         return age;   
  19.     }   
  20.   
  21.     public void setAge(int age) {   
  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.age = age;

}

 

}

 

 

2.做一个服务,里面只发布一个方面,这个方法返回这个bean

Java代码

  1. package com.deltaj.server;   
  2.   
  3. public class BeanServer {   
  4.   
  5.     /**  
  6.      * 简单的测试方法  
  7.      *   
  8.      */  
  9.     public Persion testMethod(String name, int age) {   
  10.         Persion persion = new Persion();   
  11.         persion.setName(name);   
  12.         persion.setAge(age);   
  13.         return persion;   
  14.     }   
  15. }  

package 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. package com.deltaj.client;   
  2.   
  3. import com.deltaj.server.TestServerStub;   
  4.   
  5. public class BeanClient {   
  6.     public static void main(String[] args) throws Exception{   
  7.         // 初始化桩文件   
  8.         TestServerStub stub = new TestServerStub();   
  9.         // 初始化TestMethod方法。   
  10.         TestServerStub.TestMethod request = new TestServerStub.TestMethod();   
  11.         // 设置bean的属性值。   
  12.         request.setName("delta ");   
  13.         request.setAge(20);   
  14.         //      
  15.         System.out.println("The name is:"+stub.testMethod(request).get_return().getName());   
  16.         System.out.println("The age is:"+stub.testMethod(request).get_return().getAge());   
  17.     }   
  18.   
  19. }  

package com.deltaj.client;

 

import com.deltaj.server.TestServerStub;

 

public 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("The 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

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值