如何生成WSDL用AXIS

本文详细介绍了如何在Eclipse环境中利用Axis工具从WSDL生成Java服务端和客户端代码。首先,安装配置Axis环境,接着发布服务并生成WSDL,然后通过WSDL生成客户端Stub。最后,展示了如何编写和执行客户端程序来调用服务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

要用到的axis2-141.zip


怎么用axis把wsdl文件生成相应的java类,我都已经配置好axis了,发布服务也可以了,就是我现在手里有wsdl文件,想把他生成JAVA类,怎么生成???加我QQ290612821,或者是推荐几个地址,直接告诉我最好啦,嘿嘿

------------------------------------------------------------------------------------------------------------------
问题补充:
我按文章里写的下载了,然后运行后没有在source里生成对应的文件,点完马上就关闭了,是不是命令有问题呀,
enet_java 写道
我之间直接就是使用jbuilder来生成的,如果有这个工具的话,那就很方便了。
也可以利用wsdl2java!!
可以参考下面的文章:
http://www.iteye.com/topic/746819



------------------------------------------------------------------------------------------------------------------
问题补充:
我就用这个就行啦wsdl2java,我点击后没生成java文件
7454103 写道
http://yangyang.iteye.com/blog/57424

这里有个教程!1---5

会使用jbuilder 的话! 简直太简单了! 呵呵!



------------------------------------------------------------------------------------------------------------------
问题补充:
怎么办呀,WSDL2Java下载了,路径也对了,点击后窗口直接就关了,没反应
enet_java 写道
我之间直接就是使用jbuilder来生成的,如果有这个工具的话,那就很方便了。
也可以利用wsdl2java!!
可以参考下面的文章:
http://www.iteye.com/topic/746819



------------------------------------------------------------------------------------------------------------------
问题补充:
用WSDL2Java用配置环境变量吗,我执行的是bat文件

set Axis_Lib=.\lib
set Java_Cmd=java -Djava.ext.dirs=%Axis_Lib%
set Output_Path=.\source
set Package= com.test.webservice.client
%Java_Cmd% org.apache.axis.wsdl.WSDL2Java -o%Output_Path% -p%Package% ServiceIWAuth.wsdl


我点击后窗口马上就关闭了,是怎么回事呢,我这里也有包,不缺啥呀,就是没陪环境变量

------------------------------------------------------------------------------------------------------------------
问题补充:
文档能给我看看么
7454103 写道
引用
我就用这个就行啦wsdl2java,我点击后没生成java文件

如果你愿意尝试下 MyEclipse 或者xfire 的话 2分钟解决问题!
我这还有文档!



------------------------------------------------------------------------------------------------------------------
问题补充:
我用的不是url路径,是wsdl文件生成的,你那点击也好使么,不用开什么tomcat吧,感觉和tomcat没关系
enet_java 写道
执行这个文件会帮助你设置环境变量的,我这里都没有axis,呵呵!!!!



------------------------------------------------------------------------------------------------------------------
问题补充:
加上@那个就有反应了,但是报个错,好像是org/xml/sax/attributes

有是少包了么

enet_java 写道
执行这个文件会帮助你设置环境变量的,我这里都没有axis,呵呵!!!!



------------------------------------------------------------------------------------------------------------------
问题补充:
谢谢
7454103 写道
已发 



------------------------------------------------------------------------------------------------------------------
问题补充:
set Axis_Lib=.\lib
set Java_Cmd=java -Djava.ext.dirs=%Axis_Lib%
set Output_Path=.\source
set Package= com.test.webservice.client
%Java_Cmd% org.apache.axis.wsdl.WSDL2Java -o%Output_Path% -p%Package% pdfGenerateService.wsdl
@pause 



set Package= com.test.webservice.client

这个我不知道写啥呀,我也不知道是啥包,是这个的问题么


enet_java 写道
那可能是跟你本地的环境设置有关。
将环境变量中axis相关的设置先去掉,包括引入到classpath中的jar文件,从classpath中去掉。
纯粹的使用从哪个连接上下载的东东来运行生成代码。



------------------------------------------------------------------------------------------------------------------
问题补充:
OK啦,可以生成了,就是缺少包,我把昨天你让我下载的包都房里就好了,谢谢啦
enet_java 写道
你把你的wsdl文件PM给我,我这边帮助你生成以下看看可以生成不?

采纳的答案

2010-10-28 enet_java (架构师)
引用
我按文章里写的下载了,然后运行后没有在source里生成对应的文件,点完马上就关闭了,是不是命令有问题呀,
enet_java 写道
我之间直接就是使用jbuilder来生成的,如果有这个工具的话,那就很方便了。
也可以利用wsdl2java!!
可以参考下面的文章:
http://www.iteye.com/topic/746819


这个bat文件及使用说明没有任何问题,我使用了一下,可以正常生成的。

你的wsdl url是否正确呀?确认一下吧。




我之间直接就是使用jbuilder来生成的,如果有这个工具的话,那就很方便了。
也可以利用wsdl2java!!
可以参考下面的文章:
http://www.iteye.com/topic/746819
enet_java (架构师) 2010-10-28
http://yangyang.iteye.com/blog/57424

这里有个教程!1---5

会使用jbuilder 的话! 简直太简单了! 呵呵!
7454103 (资深架构师) 2010-10-28
引用
我就用这个就行啦wsdl2java,我点击后没生成java文件

如果你愿意尝试下 MyEclipse 或者xfire 的话 2分钟解决问题!
我这还有文档!
7454103 (资深架构师) 2010-10-28
解压出来以后保存到一个非中文的目录下面,然后修改WSDL2Java(URL).bat里面的wsdl链接为自己的真实连接,我就是加上了一个@pause。如下:完全可以正常生成的

Java代码   收藏代码
  1. set Axis_Lib=.\lib  
  2. set Java_Cmd=java -Djava.ext.dirs=%Axis_Lib%  
  3. set Output_Path=.\source  
  4. set Package= com.test.webservice.client  
  5. %Java_Cmd% org.apache.axis.wsdl.WSDL2Java -o%Output_Path% -p%Package% http://localhost:8080/NGCUSTCARE/service/pdfGenerateService?wsdl  
  6. @pause  
set Axis_Lib=.\lib
set Java_Cmd=java -Djava.ext.dirs=%Axis_Lib%
set Output_Path=.\source
set Package= com.test.webservice.client
%Java_Cmd% org.apache.axis.wsdl.WSDL2Java -o%Output_Path% -p%Package% http://localhost:8080/NGCUSTCARE/service/pdfGenerateService?wsdl
@pause
enet_java (架构师) 2010-10-28
执行这个文件会帮助你设置环境变量的,我这里都没有axis,呵呵!!!!
enet_java (架构师) 2010-10-28
只需要解压,然后路径什么的都不需要修改的。

直接编辑WSDL2Java(URL).bat文件中的url,然后保存,双击WSDL2Java(URL).bat执行,就会在当前目录下面生成一个source目录,目录结构就是你设置的package 默认是com\test\webservice\client,会生成5个文件。
enet_java (架构师) 2010-10-28
引用
我用的不是url路径,是wsdl文件生成的,你那点击也好使么,不用开什么tomcat吧,感觉和tomcat没关系
enet_java 写道
执行这个文件会帮助你设置环境变量的,我这里都没有axis,呵呵!!!!


完全可以,是不是你的wsdl文件有问题。
enet_java (架构师) 2010-10-28
安装好axis,他自带一个java2wsdl,直接用他就可以了

在命令通过java执行:

H:\axis-1_4\lib>java -cp g:/611 code/pm/src/share;axis.jar;axis-ant.jar;commons-
discovery-0.2.jar;commons-logging-1.0.4.jar;jaxrpc.jar;log4j-1.2.8.jar;saaj.jar;
wsdl4j-1.5.1.jar org.apache.axis.wsdl.Java2WSDL  -o p3e.wsdl -n "urn:P3EWebservi
ces" -p"p3e.webservice" "urn:P3EWebservices" p3e.webservice.P3EWebservices

-cp后边的包都要有,-o代表要转的wsdl,-p代表包,其他的参数你可以参考http://demon3780.iteye.com/blog/463659。

希望对你有帮助:)
soartju (高级程序员) 2010-10-28
已发 
7454103 (资深架构师) 2010-10-28
那可能是跟你本地的环境设置有关。
将环境变量中axis相关的设置先去掉,包括引入到classpath中的jar文件,从classpath中去掉。
纯粹的使用从哪个连接上下载的东东来运行生成代码。
enet_java (架构师) 2010-10-28
引用
问题补充:
set Axis_Lib=.\lib
set Java_Cmd=java -Djava.ext.dirs=%Axis_Lib%
set Output_Path=.\source
set Package= com.test.webservice.client
%Java_Cmd% org.apache.axis.wsdl.WSDL2Java -o%Output_Path% -p%Package% pdfGenerateService.wsdl
@pause 


set Package= com.test.webservice.client

这个我不知道写啥呀,我也不知道是啥包,是这个的问题么



enet_java 写道
那可能是跟你本地的环境设置有关。
将环境变量中axis相关的设置先去掉,包括引入到classpath中的jar文件,从classpath中去掉。
纯粹的使用从哪个连接上下载的东东来运行生成代码。


跟这个package没有任何关系。













http://www.iteye.com/topic/746819


1  下载WSDL2Java.rar

2  解压WSDL2Java.rar

3  用记事本打开WSDL2Java(file).bat 修改HelloWorldService.wsdl为你要转换的wsdl文件

4  执行WSDL2Java(file).bat批处理文件

5  source文件夹下位相应的java代码

   若wsdl为url形式,修改WSDL2Java(URL).bat同时执行WSDL2Java(URL).bat批处理文件









http://blog.youkuaiyun.com/ziliang871118/article/details/6103565

eclipse下如何用axis生成wsdl客户端

一、Axis环境的安装

  1、安装环境 J2SE SDK 1.4,Tomcat 5.0,eclipse 3.2。
  2、到 http://xml.apache.org 网站下载Axis安装包。
  3、将Axis相关包文件放在WEB-INF/lib目录下。
  4、Axis可选的包:activation.jar; mail.jar; xmlsec-1.4.Beta1.jar拷贝到WEB-INF目录下,生成客户端时候需要使用。
  Axis支持三种web service的部署和开发,分别为:
  1、Dynamic Invocation Interface (DII)
  2、Dynamic Proxy方式
  3、Stubs方式


二   新建web项目test,编写服务端程序server,SayHello.java,编译server.SayHello.java

 package server;
 public class SayHello
 {
  public String getName(String name)
  {
   return "hello "+name;
  }
 }
 
三 编写deploy.wsdd文件

 <deployment xmlns="http://xml.apache.org/axis/wsdd/"
 xmlns:java = "http://xml.apache.org/axis/wsdd/providers/java" >      
  <!--HelloWorld为webservice的名字,java:RPC为服务类型,  -->     
   <service name = "SayHello" provider = "java:RPC" >    
   <!--参数className指定具体的类  -->    
   <parameter name = "className" value = "server.SayHello" />  
    <!-- 此参数定义允许调用的方法,*号表示所有public方法 -->      
   <parameter name = "allowedMethods" value = "*" />           
  </service >      
 </deployment > 

 
四  发布服务
 set Axis_Lib=E:/MyTest/test/WebRoot/WEB-INF/lib
 set Java_Cmd=java -Djava.ext.dirs=%Axis_Lib%
 set Axis_Servlet=http://localhost:8081/test/servlet/AxisServlet
 %Java_Cmd% org.apache.axis.client.AdminClient -l%Axis_Servlet% deploy.wsdd
 执行这个批处理文件,这时候,如果提示成功的话,访问http://localhost:8081/test/services 就会显示服务列表
    并访问http://localhost:8081/test/services/SayHello?wsdl
 生成文件sayHello.wsdl


五  编写WSDL2Java.bat,WSDL2Java.bat内容如下
 set Axis_Lib=E:/MyTest/test/WebRoot/WEB-INF/lib
 set Java_Cmd=java -Djava.ext.dirs=%Axis_Lib%
 set Output_Path=E:/MyTest/test/src
 set Package=client.SayHello
 %Java_Cmd% org.apache.axis.wsdl.WSDL2Java -o%Output_Path% -p%Package% SayHello.wsdl
 执行这个批处理文件就可以生成client stub
  生成的stub client文件列表为:SayHello.java,SayHelloService.java,SayHelloServiceLocator.java,SayHelloSoapBindingStub.java .

 

六  编写客户端程序,编译并执行
    public class Test {

  /**
   * @param args
   * @throws ServiceException
   * @throws RemoteException
   */
  public static void main(String[] args) throws ServiceException, RemoteException {

    SayHelloService service = new SayHelloServiceLocator();
    SayHello_PortType client = service.getSayHello() ;
    String retValue = client.getName("clientname");
    System.out.println(retValue);

  }

 }













http://www.blogjava.net/rongxh7/archive/2009/05/21/271982.html

http://www.blogjava.net/rongxh7/archive/2009/07/02/285193.html

Axis2与Eclipse整合开发Web Service之二:WSDL逆向生成服务端

http://www.blogjava.net/rongxh7/archive/2009/07/02/285193.html

一般开发Web Service,是选写服务端,再根据生成的WSDL文件生成客户端。看过一本SOA的书中说,如果实现防止不同语言一些特定的数据类型的不兼容性,推荐先定义WSDL接口,包括一输入输出参数、返回值及相关的数据类型等,再通过WSDL来生成服务器端和客户端,这样的好处是:服务端不用关心客户端怎么调用,客户端也不用关系服务端如何实现。

       关于Eclipse中Axis2的配置方法,请看我的[图解教程] Axis2与Eclipse整合开发Web Service之一:简单的计算服务例子,下面来新建一个WSDL文件,如下图:

image

改个名字为“manager.wsdl”,如下图:

image

下一步,定义命名空间和协议等信息,默认即行。如下图:

image

finish后,会在主工作区出现如下图:

image

这是manager.wsdl的图形化形式,点击“Source”会可查看到源代码:

image

这是默认生成的wsdl,我们要根据我们的项目需要,修改上面的图,首先对方法名进行修改,如下图:

image

可见,修改之后,右边的input和output也跟着修改了,这两个就是定义plus的输入和输出。

点击input参数“plus”右边的提示箭头,进入下图:

image

就在这里定义输入参数和和参数类型等信息,因为我们plus(float x, float y)方法中有两个参数x和y,故我们将上图改成两个参数的序列:

image

变成下图,对比一下方法plus(float x, float y),下图也不会太难理解吧!

image

我们返回manager.wsdl视图,选择output参数右边的箭头,进入下图:

image

我们在这里设置float plus(float x, float y)方法的返回值及其类型,因其返回值只有一个,我们只须把上面的out的类型改成我们方法中用的float,改后,如下图:

image

有没有注意到上图左上角有个image 图标,点击它,进入下图:

image

我们可以在这里对输入输出的参数及其他数据类型进行修改,如果在上面的操作过程中,不小心产生了多余的标签的话,也可以在这里去除。

好了,我们再回到manager.wsdl,在源代码视图里右键选“Validate”,对xml文档进行检验,如果有错误的,就根据需要修改。

image

好了,图形化编写的wsdl文档完成了,顺便说一下,方法是可以定义多个的,如下图:

image

为简单起见,我们就先以刚才做定义的那个方法为例,看看,如何根据wsdl文件,自动生成Web Service的服务器端。

 

我们New一个Web Service,如下图:

image

记得在Web Service type中选择“Top down Java Bean Web Service”,如下图:

image

然后,在Service definition中找到刚才写的那个manager.wsdl文件。

image 

回到Web Service对话框,将服务类型的滑块调到“Develop service”处,

image

接下来,就next –> next –-> finish就行。它会自动生成Web Service服务端的接口和类,在类中,可找到我们定义的方法:

image

我们只要修改方法plus的方法体,以实现我们要实现的功能即行。如下:

image

这是通过WSDL反向生成Web Service服务端的最简单一个例子,可能看不到有什么好处,没有像[图解教程] Axis2与Eclipse整合开发Web Service之一:简单的计算服务例子那样的简便快捷,但如果是一些特有的数据类型,如List,Set,这些,我们有在WSDL图形化设计中找到相应的替代类型,先定义WSDL再生成服务端接口,这样做,不仅Java开发客户端是没有问题的,用C#开发客户端也能成功没有出错!

但如果先开发服务器端的话,如果用到一些Java特有的数据类型,如List,Set,如果用其他语言生成的客户端,就可能出问题。同理,用C#开发服务端,如果用到像DataSet这样的返回类型的话,那如果用Java或者其他语言去开发客户端,也可能会出现问题的。

如果统一先写WSDL,再根据WSDL生成服务端和客户端,应该是一种很不错的做法,Eclipse在这方面的图形化支持给带给我们事半功倍的效果,这样做,也比较符合SOA的做法。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值