2012-06-20 116 views
3

我已經使用cxf-codegen-plugin生成了一個Web服務客戶端,並且本地我正在運行此代碼並且它連接到了Web服務。WebLogic上的CXF:JAXBException - 屬性不受支持

當我嘗試將我的應用程序部署到我們的WebLogic服務器時出現問題。當我*ServiceImplService類試圖實例,下面的異常被拋出:

Caused by: javax.xml.bind.JAXBException: property "supressAccessorWarnings" is not supported 

從我所收集的,這可以從乾的WebLogic提供一些JAXB相關類的舊版本。我已經(分開)嘗試添加com.sun.xml.bind.*,javax.xml.*,javax.jws.*並且絕望甚至com.sun.*weblogic-application.xmlprefer-application-packages元素,但仍然是相同的結果。

任何人都知道什麼可以解決這個問題,或者有更進一步的調試建議嗎?


一些額外的信息,如果它是相關

  • CXF版本:2.6.1
  • 的WebLogic版本:10.3.4.0

的weblogic-application.xml中,沒有任何我嘗試過的修改:

<?xml version="1.0" encoding="ISO-8859-1"?> 
<wls:weblogic-application xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:wls="http://www.bea.com/ns/weblogic/90" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/j2ee_1_4.xsd http://www.bea.com/ns/weblogic/90 http://www.bea.com/ns/weblogic/90/weblogic-application.xsd"> 
    <wls:prefer-application-packages> 
     <wls:package-name>org.hibernate.*</wls:package-name> 
     <wls:package-name>antlr.*</wls:package-name> 
     <wls:package-name>org.springframework.*</wls:package-name> 
     <wls:package-name>net.bull.*</wls:package-name> 
     <wls:package-name>org.apache.commons.*</wls:package-name> 
    </wls:prefer-application-packages> 
</wls:weblogic-application> 

拋出的異常:

Caused by: javax.xml.bind.JAXBException: property "supressAccessorWarnings" is not supported 
    at com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:118) 
    at com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:202) 
    at sun.reflect.GeneratedMethodAccessor391.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:128) 
    at javax.xml.bind.ContextFinder.find(ContextFinder.java:277) 
    at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:372) 
    at weblogic.wsee.jaxws.tubeline.ConfigReaderTubelineDeploymentListener.readConfigFile(ConfigReaderTubelineDeploymentListener.java:164) 
    at weblogic.wsee.jaxws.tubeline.ConfigReaderTubelineDeploymentListener.init(ConfigReaderTubelineDeploymentListener.java:52) 
    at weblogic.wsee.jaxws.spi.WLSServiceDelegate$WLSTubelineDeploymentListenerRepository.<init>(WLSServiceDelegate.java:323) 
    at weblogic.wsee.jaxws.spi.WLSServiceDelegate.<init>(WLSServiceDelegate.java:94) 
    at weblogic.wsee.jaxws.spi.WLSProvider$ServiceDelegate.<init>(WLSProvider.java:586) 
    at weblogic.wsee.jaxws.spi.WLSProvider.createServiceDelegate(WLSProvider.java:120) 
    at weblogic.wsee.jaxws.spi.WLSProvider.createServiceDelegate(WLSProvider.java:112) 
    at weblogic.wsee.jaxws.spi.WLSProvider.createServiceDelegate(WLSProvider.java:83) 
    at javax.xml.ws.Service.<init>(Service.java:56) 
    at <my package name>.PutSituationServiceImplService.<init>(PutSituationServiceImplService.java:47) 
    ... 7 more 

回答

1

如果有人來一起更好的答案,我會標記爲選定的一個,但現在:

似乎從事實上,這源於在WebLogic耗材提供JAXB 2.0和JAXB 2.1,而此CXF版本使用JAXB 2.2功能。

從我所瞭解的情況來看,不可能使用prefer-package-elements來選擇1)已導入JDK或2)sun內部類的類。您可以選擇將jar文件放入JDK/JRE的認可摺頁中,但我不想走這條路線。

目前我已將CXF降級到v.2.2.12,這是使用JAXB 2.1的最後一個CXF版本。

0

同樣的錯誤是由METRO 2.0庫造成的。當您嘗試從wdsl創建Web服務時,該庫會自動添加到NetBeans項目中。

由於我不需要這個庫,我將它從項目中刪除。

相關問題