① 在Tomcat上如何部署webservice的項目,我是用xfire+Spring+Hibernate寫的webservice項目
以我的版本為例把項目導成.war文件放到Tomcat目錄中的webapps中,然後啟動Tomcat就可以了
② java寫了個基於XFire的介面,給java調用是沒問題的,然後換到C#調用的時候報了這個錯誤,請問是什麼原因
根據網路:XFire是新一代的Java Web服務引擎。。。那你怎麼能要求它一定與C#兼容呢?如果是webservice那就是通用的
③ xFire的 aegis.xml配置問題。我配置了IGetBookService.aegis.xml和BBook.aegis.xml文件,但仍有問題。
<method name="getAllBoooks">
<return-type componentType="com.entity.BBook"/>
</method></mapping></mappings>
這個的返回類型是com.entity.BBook,是個實體
public interface IGetBookService {
public List getAllBooks();}
這里getAllBooks()返回的是List
Cannot create mapping for java.util.List, unspecified component type for return type of method getAllBooks in interface com.qt.order.IGetBookService
這個錯誤代碼的意思是,不能與List做映射,也就是說BBook不能被強制映射成List
你看把
<return-type componentType="com.entity.BBook"/>
改成
<return-type componentType="java.util.List"/>
行不
④ xfire自定義類型傳輸
webservices里傳輸的對象,不能自定義為集合類的,具體原因我也不清楚,以前我也試過用ArrayList、HashMap作為自定義傳輸對象,都出錯了。
建議你把Map封裝到一個java對象中,webservices是可以傳輸java對象的。後來我就是這么實現的。
⑤ 怎麼用xfire 自動生成客戶端代碼
xFire客戶端生成及使用
首先下載XFIRE插件 是用eclipse
1.xFire客戶端生成
右鍵項目名稱,new — other ,選擇 Code generation from WSDL document
填寫WSDL地址或者文件路徑,(由客戶端提供),已經生成代碼存放的路徑
生成的文件如下:
配置weblogic啟動項
由於xFire需要的jar,會與weblogic自帶的jar文件產生沖突,所以weblogic啟動時需要先載入一些jar :
修改weblogic的啟動配置。對startWebLogic.cmd進行編輯,找到 set CLASSPATH = 設置的地方,加上需要載入的jar,如:
set CLASSPATH= %MEDREC_WEBLOGIC_CLASSPATH%
修改成:(假設 以上jar包存放在E:\lib\下面)
set CLASSPATH=E:\lib\xfire-aegis-1.2.6.jar;
E:\lib\xfire-jaxb2-1.2.6.jar;E:\lib\xfire-jsr181-api-1.0-M1.jar;
E:\lib\qname.jar;E:\lib\wsdl4j-1.5.2.jar;E:\lib\jdom-1.0.jar;
E:\lib\xfire-all-1.2.6.jar;E:\lib\jaxb-api-2.0.jar;E:\lib\commons-httpclient-3.0.jar;
E:\lib\commons-codec-1.3.jar;E:\lib\commons-beanutils-1.7.0.jar;
E:\lib\commons-beanutils-1.7.0.jar;E:\lib\commons-logging-1.0.4.jar;
E:\lib\log4j-1.2.13.jar;
%CLASSPATH%;%MEDREC_WEBLOGIC_CLASSPATH%
代碼編寫
服務調用
根據xFire生成的客戶端
這樣,直接可以由service調用webService的介面。
數據封裝:
xFire生成出來的調用webService介面所需要的實體類都在vo文件夾下面,在vo類裡面,與普通的java實體一樣,都包含屬性 和 該屬性的set,get方法,但是除基本數據類型外,其他的類型都被封裝成JAXBElement,如String類型,被封裝成:JAXBElement<String>。
如:ScheleDataForCheckVo.java
生成一個xml元素實例需要四個參數:
public JAXBElement(QName name, //xml 元素標記名稱的 Java 綁定
Class<T> declaredType, // xml 元素聲明類型的 Java 綁定
Class scope, // xml 元素聲明作用域的 Java 綁定
T value) //表示 xml 元素值的 Java 實例
1.JAXBElement<String>,JAXBElement<Long>類型:
注意 new QName 時候的兩個參數,對應著 vo 文件裡面該屬性注釋中的name和namespace.
於是,我們在給VO對象set值的時候,就應該這樣寫:
DATE類型,在VO類中會轉變成 XMLGregorianCalendar 類型,這時候我們需要將日期轉化成 Calendar 類型,再轉成 XMLGregorianCalendar 類型
下面是我寫的一個時間轉換的公共方法:
圖片上傳不了 705646946 有問題聯系吧 一起探討
⑥ 如何用Xfire生成WSDL文件,是生成WSDL文件,而不是根據WSDL文件生成客戶端.
看看。。
⑦ xfire實現 webservice怎麼傳送xml文件
用Xfire傳附件,首先得修改配置文件支持附件,其次,代碼參數應該先將文件轉換為byte數組或者DataHandler數組然後再進行傳遞就OK了。
⑧ 我用XFire實現ws_security,配置的services.xml文件如下,怎麼老報錯啊
根據報錯,應該是你的bean路徑寫錯了或者說你的bean不存在,導致找不到bean
⑨ xfire客戶端需要哪些jar文件
xfire客戶端所需的包:
錯誤:java.lang.NoSuchMethodError: javax.xml.namespace.QName.<init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Stringjavax.xml.namespace.QName的方法定義太舊,用xfile的lib裡面的stax-api-1.0.1.jar和stax-utils-20040917.jar並刪除舊的javax.xml.namespace.QName如jaxrpc.jar(不確定是否必須,後來加入又沒有再報錯) 錯誤:Provider com.bea.xml.stream.MXParserFactory not found javax.xml.stream.FactoryConfigurationError: Provider com.bea.xml.stream.MXParserFactory not found類路徑中的包沒有StAX 介面的實現,拷貝包:
wstx-asl-3.2.0.jar,stax-api-1.0.1.jar,stax-utils-20040917.jar
xfire客戶端所需的包:
commons-httpclient-3.0.jar
jaxen-1.1-beta-9.jar
jdom-1.0.jar
stax-api-1.0.1.jar
stax-utils-20040917.jar
wsdl4j-1.6.1.jar
wss4j-1.5.0.jar
wstx-asl-3.2.0.jar
xfire-all-1.2.4.jar
xfire-jsr181-api-1.0-M1.jar
xml-apis-1.0.b2.jar
XmlSchema-1.1.jar
xmlsec-1.3.0.jar
⑩ xfire運行時報錯,可以訪問到wsdl文件,但是調用方法時就報空指針,折磨了我一上午了,求救。。。
空指針錯誤。xfire我沒用過,不清楚.