网站地图
  
  高级搜索
  首页   技术论坛   博客 派计划   产品中心   资源中心   银弹在线   商城  





用Eclipse3.2+MyEclipse5.5M1+axis2_1.1.1+tomcat5.5 开发Web Services    
#1楼
给作者发送短消息 给作者发送短消息 实名会员 
查看用户其他信息
总分 135 分
财富 200 goCom币
威望 44
排名 :(
段位 新手必读
  今年的3月5号,我在博客中发表了一篇<<用Eclipse3.2+MyEclipse5.5M1+axis2_1.1.1+tomcat5.5 开发Web Services>>,受到很多网友的关注.陆续有网友发表不同的意见.很多网友不能很好的实现文中说描述的最终结果,更有的网友认为这篇文章是假的,根本不可能实现.

      今天我把代码找出来,在jdk 5.0 + Tomcat 5.0.28 + eclipse-rcp-europa-fall2-win32 环境 run了一下,完全没有问题! 下图是运行结果的截图.


  在goCom上也将这篇原文贴上,供大家分享:


网上看到的由--呼必斯哈拉图--写的"Apache AXIS 开发 Web Services Step By Step",跟着做了一遍。


非常感谢呼必斯哈拉图,写得非常的详细,图文并茂。

但是,我的环境和他文中的不太一样,所以根据自己的环境重写如下。


一、环境准备


1.1软件下载准备

Tomcat 5.5下载地址:

http://tomcat.apache.org/download-55.cgi#5.5.20


Axis War包:

http://ftp.wayne.edu/apache/ws/axis2/1_1_1/axis2.war


Axis Eclipse plug-in(代码生成工具和打包工具):

http://apache.justdn.org/ws/axis2/tools/1_1_1/axis2-eclipse-codegen-wizard.zip

http://apache.justdn.org/ws/axis2/tools/1_1_1/axis2-eclipse-service-archiver-wizard.zip


Eclipse 3.2:

http://www.eclipse.org/


MyEclipse5.5M1

http://www.myeclipseide.com/


1.2安装


A.首先搭建开发环境,将下载的Eclipse解压缩到一个目录,D:eclipse-SDK-3.2-win32。

B.将下载到的Axis 的两个plug-in解压缩到D:Axis-Plugin-Direclipseplugins目录下


C.在eclipse目录下创建D:eclipse-SDK-3.2-win32eclipselinks,新建文件名为:axis-eclipse-plugin.link


内容为:

path=D:Axis-Plugin-Dir




D.安装MyEclipse5.5M1,将eclipse目录指向D:eclipse-SDK-3.2-win32,删除D:eclipse-SDK-3.2-win32eclipseconfiguration下的org.eclipse.update目录。然后启动MyEclipse,选择“File->New->Other”可以看到如下的两个界面

1、Axis2 plugins





2、Web Servieces plugins


E.下面开始搭建Web Services的部署环境。



将下载的tomcat5.5解压缩到一个目录D:Tomcat5.5。


F.将axis2.war包拷贝到tomcat安装目录下的webapps目录。


G.启动Tomcat(D:Tomcat5.5instartup.bat),打开浏览器输入并访问:http://127.0.0.1:8080/axis2 来查看,结果如下图,表示axis2已经工作正常。



二、快速开始


2.1创建webApps项目



启动MyEclipse,新建立一个WebAppsFile->New->Project->Web Project,Project Name SayHello
,其他保持不改变。



2.2创建WSDL文件



A.选择File->New-Other菜单,进入后找到MyEclipse->Web Services并选择WSDL.如下图:


B.点击下一步按钮,显示如下图:



C.选择“src”目录作为“Enter or select the parent folder”的值,“File name”值给定为SayHello.wsdl。


D.下一步》所有界面内容取默认值,Finish!


E.显示WSDL设计器的界面如下:



F.修改图中标红色的部分:

修改图中的NewOperation为SayHello;

修改input中parameters为SayHelloRequest;

修改output中parameters为SayHelloResponse;

修改完后如下图:



红色框内为变化的内容,WSDL文件修改完毕。


2.3WSDL生成Java代码


A.选择菜单“File->New->Other”,从对话框中选取“Axis2 Wizards”下面的“Axis2 Code Generator”.点击“Next”



B.进入下一个页面,保持“Generate java source code from WSDL file”被选中,点击“Next”进入下一步。

C.点击“Browse”来选取存放在src目录下的SayHello.wsdl文件,“Next”进入下一步。

D.首先生成客户端代码和测试代码,设置如下:



E.下一步后,选择SayHellosrc目录,如下图:


Finish !


F.重复从A到C的步骤,然后生成服务端代码,设置如下:





后面同E。


G.结束后,刷新项目,如图:



这是由于没有将Axis2jar包放入class path 中以及源代码的package不为org.example.www.sayhello引起的。



H.修改包名为org.example.www.sayhello并从tomcat中的axis2 web应用WEB-INF/lib目录中加载所有jar包到项目的classpath中。


I.在SayHelloTest.java 中引入junit包。


2.4编写业务代码



打开SayHelloSKeleton.java文件其中的方法如下:


 



public org.tonyzhangcn.ws.sayhello.SayHelloResponse SayHello(org.tonyzhangcn.ws.sayhello.SayHelloRequest param0)



{



// Todo fill this with the necessary business logic



throw new java.lang.UnsupportedOperationException();



}



 


 修改为:


 



public org.tonyzhangcn.ws.sayhello.SayHelloResponse SayHello(org.tonyzhangcn.ws.sayhello.SayHelloRequest request)

{

      try
    {

             SayHelloResponse response = new SayHelloResponse();

             response.setOut("Hi,"+request.getIn()+".How are you?");

             return response;

    }catch(UnsupportedOperationException e)

       {

           throw e;

   }

}


 


2.5打包


A.选择菜单“File->New->Other”,从对话框中选取“Axis2 Wizards”下面的“Axis2 Services Archive”.点击“Next”进入下一个页面


B.选择编译好的class文件所在目录(本项目应该是WebRoot下面WEB-INF/classes),“Next”进入下一步。


C.选择WSDL文件所在目录,此处为src目录下的SayHello.wsdl文件。“Next”,再“Next”。选择services.xm文件。


D.点击“Next”,将记入最后一个页面,此处有两个选项,一个是输出目录一个是处处文件名称。这里的输出文件名称给的是SayHello。点击“Finish”完成。


2.6部署


A.将打包好的文件SayHello.jar拷贝到Tomcat中已经部署的Axis2应用的WEB-INF/services目录下面。


B.重新启动Tomcat


C.打开浏览器,输入http://127.0.0.1:8080/axis2,并点击其中的“services”链接可以看到SayHello已经被部署。点击SayHello提供的连接可以看到与之对应的WSDL。



2.7调用测试

A.修改SayHelloTest.java文件中的方法
testSayHello的内容为:


 



public void testSayHello() throws java.lang.Exception {

  String url="http://localhost:8080/axis2/services/SayHello";

  org.example.www.sayhello.SayHelloStub stub = new org.example.www.sayhello.SayHelloStub(url);

  org.example.www.sayhello.SayHelloStub.SayHello request = (org.example.www.sayhello.SayHelloStub.SayHello) getTestObject(org.example.www.sayhello.SayHelloStub.SayHello.class);

  request.setIn("Teamlet");

  System.out.println(stub.SayHello(request).getOut());

  assertNotNull(stub.SayHello(request));

 }


 


  从菜单中选择“Run>Run as->JUnit Test 完成测试!


 

Re: 用Eclipse3.2+MyEclipse5.5M1+axis2_1.1.1+tomcat5.5 开发Web Services    
#2楼
给作者发送短消息 给作者发送短消息  
查看用户其他信息
初级会员
你好,使用你的方法后,服务可以布署成功,但测试时出现问题!
org.apache.axis2.AxisFault: com.ctc.wstx.exc.WstxEOFException: Unexpected EOF in prolog
at [row,col {unknown-source}]: [1,0]
at org.apache.axis2.util.Utils.getInboundFaultFromMessageContext(Utils.java:486)
at org.apache.axis2.description.OutInAxisOperationClient.handleResponse(OutInAxisOperation.java:343)
at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:389)
at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:211)
at org.apache.axis2.client.OperationClient.execute(OperationClient.java:163)
at org.example.www.sayhello.SayHelloStub.SayHello(SayHelloStub.java:169)
at org.example.www.sayhello.SayHelloTest.testSayHello(SayHelloTest.java:31)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at junit.framework.TestCase.runTest(TestCase.java:164)
at junit.framework.TestCase.runBare(TestCase.java:130)
at junit.framework.TestResult$1.protect(TestResult.java:110)
at junit.framework.TestResult.runProtected(TestResult.java:128)
at junit.framework.TestResult.run(TestResult.java:113)
at junit.framework.TestCase.run(TestCase.java:120)
at junit.framework.TestSuite.runTest(TestSuite.java:228)
at junit.framework.TestSuite.run(TestSuite.java:223)
at org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:128)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)

能不能给解决一下!!
 




发表回复
账号用户名   密码   登录
内容:url email imgsrc image code quote
范例 Example
bold italic underline linethrough   


 [更多...]