论坛首页 Java企业应用论坛

axis2创建web service(三)

浏览 14153 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-12-04   最后修改:2008-12-07
SOA

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

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




 

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

 

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

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

 

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

 

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

 

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

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

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

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

Add unimplemented methods .



 

8.

/**
 * 调用发布的服务。
 * 
 */
public class SimpleClient {
 
 public static void main(String[] args) throws Exception{
  
  //初始化桩文件
  SimpleServerStub stub = new 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.axis2.description.AxisService).
log4j:WARN Please initialize the log4j system properly.
ztSay this is a Simple method ^-^。

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

 

 附录:

1. axis2创建web service(一)
2. axis2创建web service(二)
3. axis2创建web service(三)

4. axis2创建web service(四)

  • 大小: 48.1 KB
  • 大小: 40.6 KB
  • 大小: 40.5 KB
  • 大小: 10 KB
  • 大小: 104.7 KB
  • 大小: 120.5 KB
  • 大小: 33.2 KB
   发表时间:2008-12-13  
我到最后生成客户端时出错了,到网上找了下
这样也行

输出目录 D:\workspace\WSjava
在cmd下运行:

D:\tools\axis2-1.4.1\bin> wsdl2java.bat -uri http://localhost:8080/axis2/services/HelloUser?wsdl -o D:\workspace\WSjava


Using AXIS2_HOME:   D:\tools\axis2-1.4.1
Using JAVA_HOME:    D:\tools\jdk1.6.0_04
Retrieving document at 'http://localhost:8080/axis2/services/HelloUser?wsdl'.



出现上述3行表示正常结束,代码生成
0 请登录后投票
   发表时间:2009-02-02  

我按照上面的步骤一步步进行 到最后也是出现错误

An error ocurred while completing process

-java.lang.reflect.InvocationTargetException

 

不知道怎么回事 查下有人说换成MyEclipse5.5.1 GA 可以,我用的是6.5的

不知道怎么解决了

还请楼主多多帮忙啊

0 请登录后投票
   发表时间:2009-02-19  

我按照上面的步骤一步步进行 到最后也是出现错误

An error ocurred while completing process

-java.lang.reflect.InvocationTargetException

0 请登录后投票
   发表时间:2009-03-10  
[问题原因]
主要的问题在于 Code Generator plugin 内缺少了 backport-util-concurrent-3.1.jar 包

[解决方案]
- 关闭 Eclipse
- copy %AXIS2_HOME%\lib\backport-util-concurrent-3.1.jar 到下列 folder
%ECLIPSE_HOME%\plugins\Axis2_Codegen_Wizard_1.3.0\lib

- 注册此 jar 包: 編輯 %ECLIPSE_HOME%\plugins\Axis2_Codegen_Wizard_1.3.0\plugin.xml , 在 <runtime> 內加入下面的字串
<library name="lib/backport-util-concurrent-3.1.jar">
<export name="*"/>
</library>

- 执行 Eclipse 即可

- 若问题仍存在, 尝试改变Eclipse 使用的 JRE, 换成 JAVA 6
- 使用 JRE 1.6 启动 Eclipse 后, 若仍有问题, 试着加入 -clean 参数启动 Eclipse, 清除 osig cache:
eclipse.exe -vm "c:\java\jre1.6.0_05\bin\java.exe" -clean -console -consoleLog -debug -vmargs -Xmx384M

- 关闭 Eclipse 后, 再以一般方式启动 Eclipse, 应可解决问题

[參考]
Error while using Axis2 Code Generator Plugin for Eclipse
http://www.nabble.com/Error-while-using-Axis2-Code-Generator-Plugin-for-Eclipse-td17147595.html
http://web-latte.blogspot.com/2008/05/axis2-eclipse-plugin-code-generator.html
0 请登录后投票
   发表时间:2009-05-19  
在MyEclipse6.5中会报错:
An error ocurred while completing process
-java.lang.reflect.InvocationTargetException

主要的问题在于 Code Generator plugin 内缺少了 backport-util-concurrent-3.1.jar 包和geronimo-stax-api_1.0_spec-1.0.1.jar 包。
[解决方案] :

1.关闭 Eclipse

2.copy  %AXIS2_HOME%\lib\ 下的
backport-util-concurrent-3.1.jar 和 backport-util-concurrent-3.1.jar
复制到 MyEclipse 6.5\eclipse\plugins\Axis2_Codegen_Wizard_1.3.0\lib 文件夹下。

3.注册此 jar 包:
修改MyEclipse 6.5\eclipse\plugins\Axis2_Codegen_Wizard_1.3.0\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>

到plugin.xml文件中,保存后重新启动Eclipse即可。
0 请登录后投票
   发表时间:2009-07-17  
除了把backport-util-concurrent-2.2.jar加到lib中, 加<library name="lib/backport-util-concurrent-2.2.jar">
          <export name="*"/>
    </library>  到plugsin.xml
还要
1. 把Axis2_Codegen_wizard_1.3.0(eclipse/plugins/Axis2_Codegen_wizard_1.3.0)的名字改成Axis2_Codegen_wizard_1.4.0
2. 在plugin.xml中在<plugin>中 把Axis2_Codegen_wizard的version="1.3.0"改成version="1.3.0"
0 请登录后投票
   发表时间:2009-11-20  
插件这么多bug,真是烂到家了,用一楼的方法,直接用命令行吧。或者直接抛弃Axis,用CXF吧
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics