1. axis2用wsdl2java命令生成客戶端java類,怎麼設置超時時間,axis2.xml有配置超時,但是客戶端沒用用到。
可能是wsdl2java命令沒有生成超時的代碼,具體需要研究下生成代碼的wsdl2java的工作原理,我一般都是手動設置超時時間
Service service = new Service();
Call call = (Call) service.createCall();
call.setTimeout(1000*60*15); //設置超時時間 15分鍾
2. Java使用axis2調用一個.net 的webservice,報錯java.lang.NoSuchMethodError: doWriteMTOM
這個問題很簡單,有幾個地方可能會導致這個問題。
1、命名空間,在設置調用action的時候指定action的命名空間,具體可以看wsdl文件中的聲明。setOperationName(new QName("http://tempuri.org/HelloWorld","HelloWorld"))
2、http協議版本不同造成的,axis2在做http傳輸時採用的chunked模式,而.net的webserver不支持axis中使用的是HTTP/1.0協議,而.NET和axis2使用的是HTTP/1.1協議,後兩者的區別在於NET未使用ns1的命名空間前綴打包SOAP請求,且axis2使用了Content- Encoding: chunked頭。所以必須在axis2中設置一下。
UserServiceStub stub = new UserServiceStub();
stub._getServiceClient().getOptions().setProperty(org.apache.axis2.transport.http.HTTPConstants.CHUNKED,Boolean.FALSE);
具體的還要你試一下,如果方便的話把wsdl文件和java代碼發給我,我看看是哪的問題。
3. 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。
如還有問題參考如下解決辦法:修改名字,再改回來。
.
4. java webservice怎麼生成wsdl文件
在大多數情況下我們都需要為我們的服務提供一個WSDL文件,而 Axis2's Java2WSDL 是專門用來生成WSDL文件的D專用工具,如果你要在命令行模式下進行生成WSDL文件,首先需要保證你的環境變數AXIS2_HOME是否已經配置OK,同時還要保證把%AXIS2_HOME%in加入到你的path環境中,要生成 WSDL文件,首先要保證你的class能夠編譯成功,而且已經編譯成功,然後進入class文件編譯後的根目錄(在JBuilder中是classes,在Eclipse中是bin目錄)這時,生成WSDL文件的准備工作已經OK。x0dx0ax0dx0a下面是生成WSDL文件時的可選參數和參數說明:x0dx0a---------------------------------------------------------------------------------x0dx0aUsage java2wsdl -cn
5. SoapUI中的axis2生成的代碼有什麼作用怎麼用
這個其實就是wsdl2java,也就是根據介面對外發布的wsdl文件生成調用這個web service介面的客戶端程序。
6. 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>
7. 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包中的類.
8. 如何使用axis2生成wcf客戶端代碼
下載axis2-1.5.4-bin.zip文件並解壓。
設置axis2的環境變數,如下圖所示:
利用axis2中的wsdl2java.bat生成客戶端程序。
先啟動Tomcat7並在IE里運行http://localhost:8081/TestAxis2Ws/services/HelloService?wsdl 看看服務端是否正常解析。
%AXIS2_HOME%binwsdl2java -uri http://localhost:8081/TestAxis2Ws/services/HelloService?wsdl -paxis2.service.server -o stub
其中-uri參數指定了wsdl文件的路徑,可以是本地路徑,也可以是網路路徑。-p參數指定了生成的Java類的包名,-o參數指定了生成的一系列文件保存的根目錄。在執行完上面的命令後,讀者就會發現在當前目錄下多了個stub目錄,可以找到一個HelloServiceStub.java文件,該文件復雜調用WebService,讀者可以在程序中直接使用這個類。
運行-->cmd-->具體命令如下:
要先進入axis2的bin目錄然後運行wsdl2java.bat
Microsoft Windows XP [版本 5.1.2600]
(C) 版權所有 1985-2001 Microsoft Corp.
C:Documents and SettingsJambhala>d:
D:>cd D:WebServiceAxisaxis2axis2-1.5.4-binaxis2-1.5.4bin
D:WebServiceAxisaxis2axis2-1.5.4-binaxis2-1.5.4bin>wsdl2java -uri http://l
ocalhost:8081/TestAxis2Ws/services/HelloService?wsdl -p axis2.service.server -o
stub
Using AXIS2_HOME: D:WebServiceAxisaxis2axis2-1.5.4-binaxis2-1.5.4
Using JAVA_HOME: C:Javajdk1.6.0
Retrieving document at 'http://localhost:8081/TestAxis2Ws/services/HelloService?
wsdl'.
D:WebServiceAxisaxis2axis2-1.5.4-binaxis2-1.5.4bin>
這時到axis2的bin目錄下會發現出現了一個stub目錄,如下圖所示:
其中HelloServiceStub.java是客戶端程序,HelloServiceCallbackHandler.java是非同步客戶端程序。
把這兩個類復制到上次已經建立好的服務端工程里
注意:這個地方復制進來後會報錯的,因為在D:WebServiceAxisaxis2axis2-1.5.4-binaxis2-1.5.4binstubsrcaxis2serviceserver下的類路徑為package axis2.service.server;需要改成packageaxis2.service.client;並且需要把HelloServiceStub.java和HelloServiceCallbackHandler.java相關的報錯位置都把路徑改一下,不要閑煩,要改的地方還滿多的呢。
創建帶main方法的StubClient.java類文件,代碼如下:
package axis2.service.domain;
import java.rmi.RemoteException;
import org.apache.axis2.AxisFault;
import axis2.service.client.HelloServiceStub;
public class StubClient {
public static void main(String[] args) {
HelloServiceStub stub = null;
try {
stub = new HelloServiceStub();
HelloServiceStub.SayHello sh = new HelloServiceStub.SayHello();
sh.setName("於士博");
System.out.println(stub.sayHello(sh).get_return());
} catch (AxisFault e) {
e.printStackTrace();
} catch (RemoteException e) {
e.printStackTrace();
}
}
}
9. axis2的wsdl2java命令可以生成wsdl的服務端和客服端代碼,請問各位大牛這個客服端和服務端的有什麼區別。
wsdl通常是由來介面提供商生成的自,也就是說服務端代碼在提供商那。
自己通過wsdl2java命令可生成服務端與客戶端的代碼,但是服務端中的代碼只包含介面定義,沒有代碼實現.測試的時候可以自己實現,只需要保證數據能正確傳輸就行了。