用ANT的axis-wsdl2java标签实现的。你也可以考虑一下
Ⅱ Eclipse中用axis2插件生成wsdl文件时出错。
建议重新安装解决方法如下:
1、下载Axis2及Eclipse插件
http://axis.apache.org/axis2/java/core/download.cgi下载适应版本,
http://archive.apache.org/dist/ws/axis2/tools/
下载axis2-eclipse-codegen-wizard.zip和axis2-eclipse-service-archiver-wizard.zip
2、解压插件
解压后得到两个文件夹:Axis2_Codegen_Wizard_1.3.0和Axis2_Service_Archiver_1.3.0,拷贝至eclipse\plugins
3、重新启动Eclipse,如在File->New->Other中有Axis2 Wizards,说明插件安装成功。
4、新建Axis2 Code Generator,选择wsdl文件可生成客户端代理类。
出现错误An error occurred while completing process-java.lang.reflect.InvocationTargetException的解决方法:
1.
从AXIS2的LIB库中复制"geronimo-stax-api_1.0_spec-1.0.1.jar"和"backport-util-
concurrent-3.1.jar"文件到Axis2_Codegen_Wizard_1.3.0的lib目录中,同时修改
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文件中,保存。
如没有backport-util-concurrent-3.1.jar另外下载,下载地址:http://backport-jsr166.sourceforge.net/。
2.将 $workspace位置\.metadata\.plugins下目录 Axis2_Codegen_Wizard 删除。
3.在命令行下切换至$ECLIPSE_HOME目录,然后执行:eclipse –clear。
如还有问题参考如下解决办法:修改名字,再改回来。
.
Ⅲ eclipse使用 webservice(axis)写号接口之后需要生成wsdl,但是生成的wsdl文件没有接口方法。
1、使用Eclipse创建Dynamic Web Project工程
2、编写服务端方法(就是创建一个简单的包和类),这个类是用来对外发布的一些服务,类里面的方法即是对外的一些接口方法名称。
3、在项目名称上右键--新建--Other--选择Web Service(注意Eclipse版本需要带有aixs服务,可以通过windows--properties--web service查看)
4、选择刚才创建的类作为对外发布的一个接口。
5、完成之后就会自动创建一个文件wsdl的文件.
6、打开wsdl文件,可以看到wsdl对外的地址。将项目在tomcat上启动后,在浏览器中打开这个地址(后面加上?wsdl能够打开说明创建成功)
Ⅳ 如何打开wsdl文件
webservice的发布一般都是使用WSDL(web service descriptive language)文件的样式来发布的,在WSDL文件里面,包含这个webservice暴露在外面可供使用的接口。
注意,以下的代码并没有经过真正的测试,只是说明这些情况,不同版本的Axis相差很大,最好以apache网站上的例子为准,这里仅仅用于说明其基本用法。
1,直接AXIS调用远程的web service,直接调用模式如下:
import java.util.Date;
import java.text.DateFormat;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import javax.xml.namespace.QName;
import java.lang.Integer;
import javax.xml.rpc.ParameterMode;
public class caClient {
public static void main(String[] args) {
try {
String endpoint = "http://localhost:8080/ca3/services/caSynrochnized?wsdl";
//直接引用远程的wsdl文件
//以下都是套路
Service service = new Service();
Call call = (Call) service.createCall();
call.setTargetEndpointAddress(endpoint);
call.setOperationName("addUser");//WSDL里面描述的接口名称
call.addParameter("userName", org.apache.axis.encoding.XMLType.XSD_DATE,
javax.xml.rpc.ParameterMode.IN);//接口的参数
call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING);//设置返回类型
String temp = "测试人员";
String result = (String)call.invoke(new Object[]{temp});
//给方法传递参数,并且调用方法
System.out.println("result is "+result);
}
catch (Exception e) {
System.err.println(e.toString());
}
}
}
2,直接SOAP调用远程的webservice ,这种模式很少用,但是网络上有人贴出来,也转过来 :
import org.apache.soap.util.xml.*;
import org.apache.soap.*;
import org.apache.soap.rpc.*;
import java.io.*;
import java.net.*;
import java.util.Vector;
public class caService{
public static String getService(String user) {
URL url = null;
try {
url=new URL("http://192.168.0.100:8080/ca3/services/caSynrochnized");
} catch (MalformedURLException mue) {
return mue.getMessage();
}
// This is the main SOAP object
Call soapCall = new Call();
// Use SOAP encoding
soapCall.setEncodingStyleURI(Constants.NS_URI_SOAP_ENC);
// This is the remote object we're asking for the price
soapCall.setTargetObjectURI("urn:xmethods-caSynrochnized");
// This is the name of the method on the above object
soapCall.setMethodName("getUser");
// We need to send the ISBN number as an input parameter to the method
Vector soapParams = new Vector();
// name, type, value, encoding style
Parameter isbnParam = new Parameter("userName", String.class, user, null);
soapParams.addElement(isbnParam);
soapCall.setParams(soapParams);
try {
// Invoke the remote method on the object
Response soapResponse = soapCall.invoke(url,"");
// Check to see if there is an error, return "N/A"
if (soapResponse.generatedFault()) {
Fault fault = soapResponse.getFault();
String f = fault.getFaultString();
return f;
} else {
// read result
Parameter soapResult = soapResponse.getReturnValue ();
// get a string from the result
return soapResult.getValue().toString();
}
} catch (SOAPException se) {
return se.getMessage();
}
}
}
Ⅳ wsdl文件生成的java类怎么用
根据wsdl文件生成webservice代码下边我们可以根据这个.wsdl文件生成java代码,这些代码用于客户端和服务器端进行连接,也有客户端的代码。生成代码的具体步骤如下:选择菜单“File->New->Other”,从对话框中选取“Axis2Wizards”下面的“Axis2CodeGenerator”点击Next下一步进入如下页面:点击Next下一步进入如下页面:在该页面选择刚才建好的Axis2Demo.wsdl文件点击Next下一步进入如下页面:在上边的图中选中custom和GenrateAll注意:上图中的Custompackagename是客户端代码的包名字这里把它改为:com.neusoft.axis2demo.client做为客户端的包名。然后点击Next下一步:进入如下图在OoutputPath这项选中工程的根目录作为这些自动生成代码的目录.然后点击finish完成代码生成工作.下图为生成代码后的工程目录结构下边介绍一下生成的代码的用途其中包(1):com.neusoft.axis2demo.client是客户端代码,第三方使用的.(2):com.neusoft.axis2demo.services.xsd是第三方调用webservice的传入参数和返回参数.(3):com.neusoft.axis2demo.common.xsd中的类是(2)的参数。其中第三方只需要调用com.neusoft.axis2demo.client中的Axis2DemoStub类中的nameConvertToContext方法就行了这个类的雏形是下边这样的。publiccom.neusoft.axis2demo.services.xsd.(com.neusoft.axis2demo.services.xsd.NameConvertToContextparam22)throwsjava.rmi.RemoteException{return(com.neusoft.axis2demo.services.xsd.NameConvertToContextResponse)object;//TODO}其中红色部分是(2)包中的类他们作为参数传入和返回,同时红色的类中也有set和get方法用来存储(3)com.neusoft.axis2demo.common.xsd包中的类.
Ⅵ 如何根据WSDL,通过eclipse中的axis,生成客户端代码和测试用例
你好。
Code Generator Wizard Guide for Eclipse Plug-in
eclipse菜单 file -> new -> other -> web service -> web service client
eclipse下还没试过,wsad下很简单点wsdl文件-》右键-》web services->generate client 搞定!
如果我的回答没能回帮助您,请继续追答问。
Ⅶ axis 1.4 wsdl2java怎么使用
[java] view plainprint?
用wsdl2java简化客户端的编写
也许有很多读者会说“有没有搞错啊,只调用两个WebService方法用要写这么多代码,太麻烦了”。
不过幸好Axis2提供了一个wsdl2java.bat命令可以根据WSDL文件自动产生调用WebService的代码。wsdl2java.bat命令可以在<Axis2安装目录>"bin目录中找到。在使用wsdl2java.bat命令之前需要设置AXIS2_HOME环境变量,该变量值是<Axis2安装目录>。
在Windows控制台输出如下的命令行来生成调用WebService的代码:
%AXIS2_HOME%\bin\wsdl2java -uri http://localhost:8080/axis2/services/SimpleService?wsdl -p client -s -o stub
其中-url参数指定了wsdl文件的路径,可以是本地路径,也可以是网络路径。-p参数指定了生成的Java类的包名,-o参数指定了生成的一系列文件保存的根目录。在执行完上面的命令后,读者就会发现在当前目录下多了个stub目录,在."stub"src"client目录可以找到一个SimpleServiceStub.java文件,该文件复杂调用WebService,读者可以在程序中直接使用这个类,代码如下:
package client;
import javax.xml.namespace.QName;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;
import org.apache.axis2.rpc.client.RPCServiceClient;
public class StubClient
{
public static void main(String[] args) throws Exception
{
SimpleServiceStub stub = new SimpleServiceStub();
SimpleServiceStub.GetGreeting gg = new SimpleServiceStub.GetGreeting();
gg.setName("比尔");
System.out.println( stub.getGreeting(gg).get_return());
System.out.println(stub.getPrice().get_return());
}
}
上面的代码大大简化了调用WebService的步骤,并使代码更加简洁。但要注意的是,wsdl2java.bat命令生成的Stub类将WebService方法的参数都封装在了相应的类中,类名为方法名,例如,getGreeting方法的参数都封装在了GetGreeting类中,要想调用getGreeting方法,必须先创建GetGreeting类的对象实例。
实际实现:
C:\Documents and Settings\Administrator>D:
D:\>cd axis2-1.5.4
D:\axis2-1.5.4>cd bin
D:\axis2-1.5.4\bin>
D:\axis2-1.5.4\bin>
D:\axis2-1.5.4\bin>wsdl2java -uri http://192.168.1.140:8099/services/SSO?ws
dl -p com.bcinfo.sso
Using AXIS2_HOME: D:\axis2-1.5.4
Using JAVA_HOME: D:\Program Files\Java\jdk1.6.0_10
Retrieving document at 'http://192.168.1.140:8099/services/SSO?wsdl'.
D:\axis2-1.5.4\bin>wsdl2java -uri http://192.168.1.140:8099/services/SSO?ws
dl -p com.bcinfo.SSoClient
Using AXIS2_HOME: D:\axis2-1.5.4
Using JAVA_HOME: D:\Program Files\Java\jdk1.6.0_10
Retrieving document at 'http://192.168.1.140:8099/services/SSO?wsdl'.
D:\axis2-1.5.4\bin>
Ⅷ 如何使用axis2解析wsdl
分析wsdl文件时的错误。
之前用axis2调用xfire的wsdl文件会有传参数为空的问题,因为xfire生成的wsdl文件对pojo的声明比较全面,而axis2的pojo声明不
Ⅸ 如何使用 axis2 一次发布多个wsdl
JAVA2WSDL
(1)定义接口(java)
在java工程中编写一个发送消息的接口:
[java] view plain
package com.yht.msg;
/**
* 定义发送彩信附件的接口。
* @author Administrator
*
*/
public interface SendAttachService
{
/**
* 发送彩信方法。同时携带两个字段的消息。
* @param subject 关于彩信附件的消息体
* @return 返回是否发送成功。
*/
public String sendAttach(String subject);
}
[java] view plain
<pre code_snippet_id="136111" snippet_file_name="blog_20131231_1_5420880"></pre>
<pre></pre>
<pre></pre>
<pre></pre>
<pre></pre>
(2)生成二进制文件(class)
运行:cmd
输入:E:(跳转到E盘)
输入:cd E:\workspace\Demo-Axis2-1.6.2\src(跳转到工程的src文件夹下)
输入:javac com\yht\msg\SendAttachService.java (将包路径下的java文件编译成class文件。如果该java文件引用了其他类,先编译其他类。)
(3)生成wsdl文件(wsdl)
拷贝:将class文件连同它的包路径,拷贝到axis2的bin路径下。
跳转:cmd窗口输入:cd E:\axis2-1.6.2\bin。跳转到axis2的路径下。
输入:java2wsdl -cp SendAttachSerice.class -cn com.yht.msg.SendAttachService -of SendAttachService.wsdl
(其中,-cp 后面是class文件的路径,将class文件包括包名,拷贝到axis2的bin下,可直接由class名。
-cn 后面是java文件名,包名+类名。
-of 后面是需要输出的wsdl文件的名称。
注意:如果类的包名中包含java或者axis貌似会报安全反面的错误,具体没研究过。)
执行如上命令后,在axis2的bin路径下会生成相应的wsdl文件。
4、WSDL2JAVA
该命令可以将wsdl文件定义的接口,生成接口相应的客户端和服务端java代码。
输入:wsdl2java -uri E:\axis2-1.6.2\bin\SendAttachService.wsdl -ss -ssi -sd -g (其中,-uri后面是wsdl文件的绝对路径)
执行如上命令后,axis2的bin路径下,会生成相应的src文件夹和resources文件夹(其中src中是客户端和服务端java代码,resources中是生成发布服务的service.xml和附带的wsdl文件)
生成代码后,为了便于后面客户端和服务端的封装。建议做如下步骤:
一、代码使用:
(1)在eclipse中创建Java project工程AttachService。
(2)将axis2中生成的java代码(src文件中的内容),拷贝到工程的src文件夹中。
(3)在工程AttachService根路径下创建一个lib文件夹,将axis2的所有jar包(E:\axis2-1.6.2\lib)拷贝到该文件夹下。
(4)将lib下的jar包导入工程的Library下。(工程->properties->Java Build Path->Libraries->add jars,将工程lib下jar导入。)
(5)一直确定,最后,确保代码不报错。
Ⅹ 怎么用axis把wsdl文件生成相应的java类
安装好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代表包