用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代表包