javacxfwsdl
『壹』 用CXF的wsdl2java命令行處理wsdl文件,總提示文件名目錄名或卷標語法不正確。
你在wsdl2java工具目錄下執行以下試試 然後wsdl路徑寫絕對路徑
或者建議你在eclipse裡面去用wsdl2java工具 這樣很多環境變數什麼的在eclipse中配置就行了 而且提示更加明確,方便查錯
『貳』 怎麼用cxf的wsdl2java解析wcf生成的wsdl
1、下載apache-cxf-2.6.2在環境變數中配置CXF_HOME ,在PATH中加入%CXF_HOME%\bin 2、輸入cmd 進入控制窗口,輸入wsdl2java看是否配置成功
3、參考它的文檔看這個工具的具體參數的用法
wsdl2java用法:
wsdl2java -p com -d src -all aa.wsdl
-p 指定其wsdl的命名空間,也就是要生成代碼的包名:
-d 指定要產生代碼所在目錄
-client 生成客戶端測試web service的代碼
-server 生成伺服器啟動web service的代碼
-impl 生成web service的實現代碼
-ant 生成build.xml文件
-all 生成所有開始端點代碼:types,service proxy,,service interface, server mainline, client mainline, implementation object, and an Ant build.xml file.
詳細用法見:http://cwiki.apache.org/CXF20DOC/wsdl-to-java.html
『叄』 如何在java工程里添加org.apache.cxf.tools.wsdlto.wsdltojava
1、下載apache-cxf-2.6.2在環境變數中配置CXF_HOME ,在PATH中加入%CXF_HOME%\bin
2、輸入cmd 進入控制窗口,輸入wsdl2java看是否配置成功!
『肆』 CXF 根據WSDL生成客戶端代碼, 如果WSDL需要賬號密碼在哪填寫
你下載cxf後 在bin目錄下可以看到wsdl2java.bat這個工具(現在最新的版本可能已經沒有這個工具了 注意版本)
到這個目錄下後 wsdl2java -client wsdl路徑(可以是本地wsdl文件也可以是網路wsdl路徑)
默認在該文件夾下生成
也可以添加一下-p 生成路徑
例如wsdl2java -p com.test -client wsdl路徑
會生成一個com的文件夾test文件夾下面有代碼
『伍』 通過cxf的wsdl2java生成的java代碼裡面的註解能去掉嗎
您好,我來為您解答:
「基於 XML 的 Web Service 的 Java API」(JAX-WS)通過使用注釋來指定與 Web Service 實現相關聯的元數據以及簡化 Web Service 的開發。注釋描述如何將伺服器端的服務實現作為 Web Service 來訪問或者客戶端的 Java 類如何訪問 Web Service。
JAX-WS 編程標准支持將具有用於定義服務端點應用程序的元數據的 Java 類作為 Web Service 來注釋以及注釋客戶機可以如何訪問 Web Service。JAX-WS 支持使用基於 Metadata Facility for the Java Programming Language(Java 規范請求(JSR)175)規范和「用於 Java 平台的 Web Service 元數據」(JSR 181)規范的注釋,還可以使用由 JAX-WS 2.0(JSR 224)規范定義的注釋(包括 JAXB 注釋)。通過使用符合 JSR 181 標準的注釋,可以簡單地注釋服務實現類或服務介面,並且現在將應用程序作為 Web Service 來啟用。通過在 Java 源代碼中使用注釋可以簡化 Web Service 的開發和部署,因為會定義一些通常從部署描述符文件和 WSDL 文件中獲得的附加信息,或者會將元數據從 XML 和 WSDL 映射至源工件中。
使用注釋來配置綁定、處理程序鏈、埠類型的集合名稱、服務以及其他 WSDL 參數。注釋用於將 Java 映射至 WSDL 和模式,以及在運行時控制 JAX-WS 運行時處理和響應 Web Service 調用的方式。轉載,僅供參考。
如果我的回答沒能幫助您,請繼續追問。
『陸』 java web項目怎麼使用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();
}
}
}
『柒』 cxf wsdl2java命令生成客戶端java類,怎麼設置超時時間
可能是wsdl2java命令沒有生成超時的代碼,具體需要研究下生成代碼的wsdl2java的工作原理,我一般都是手動設置超時時間
Service service = new Service();
Call call = (Call) service.createCall();
call.setTimeout(1000*60*15); //設置超時時間 15分鍾
『捌』 cxf的wsdl2java命令和JDK的wsimport命令的區別和使用
JDK提供了一個wsimport.exe的命令,主要是用於將WebService生成客戶端代碼,然後好調用WebService。
wsimport 是根據JDK1.6.0_21及以上的生成本地代碼的,它只能解析伺服器端的SOAP協議為1.1,不能解析SOAP1.2的協議。如果解析SOAP1.2 將會解析不完全。
用法:前提是已經將JDK配置為了path環境變數 C:\Documents and Settings\Administrator>wsimport -s F:\ -p com.client.jdk.wsimport http://localhost:1111/hello?wsdl
-s 後面指定生成文件的路徑,-p 自定義類包 http://localhost:1111/hello?wsdl 是wsdl的路徑。
CXF也提供了根據WSDL生成客戶端代碼的命令wsdl2java.exe 。它是根據jdk1.7生成的本地代碼,所以,需要對生成的代碼做一點點修改。
它可以支持SOAP1.1 和SOAP1.2的協議。前提是你已經下載了Apache CXF 並且將wsdl2java.exe配置為了path環境變數。
用法:C:\Documents and Settings\Administrator>wsdl2java -d F:\ -p com.client.cxf http://localhost:1111/hello?wsdl
-d 後面指定生成文件的路徑,-p 自定義類包 http://localhost:1111/hello?wsdl 是wsdl的路徑。
『玖』 如何用java調用cxf webservice介面
WebService CXF客戶端報 java.lang.RuntimeException: Cannot create a secure XMLInputFactory 異常,查了許多網路關於該問題的解決辦法,很多都說缺少包問題,但問題是我的包都存在,我用的是apache-cxf-2.7.6,經過不懈努力終於解決了,我的服務端用的是web project,客戶端用的是java project,客戶端jar包是引用其它地方的,後來建一個web project客戶端,把jar直接復制到project的lib目錄下就行了,jdk用的是1.7,客戶端依賴的介面用wsdl2java生成的。