2013-01-11 59 views
5

我想在JDK 1.6.0_31-b05中使用JDeveloper 11g R2(11.1.2.3.0)運行我的應用程序,其中包含JAX WS(2.1)Webservice。錯誤來自類上存在的@WebService註釋。
當我運行的應用程序,我得到以下錯誤,@Webservice註解weblogic異常

java.lang.IllegalArgumentException: Argument(s) "type" can't be null. 
    at com.sun.xml.bind.api.TypeReference.<init>(TypeReference.java:89) 
    at com.sun.xml.ws.model.RuntimeModeler.processDocWrappedMethod(RuntimeModeler.java:758) 
    at com.sun.xml.ws.model.RuntimeModeler.processMethod(RuntimeModeler.java:678) 
    at com.sun.xml.ws.model.RuntimeModeler.processClass(RuntimeModeler.java:428) 
    at com.sun.xml.ws.model.RuntimeModeler.buildRuntimeModel(RuntimeModeler.java:277) 
    at com.sun.xml.ws.server.EndpointFactory.createSEIModel(EndpointFactory.java:363) 
    at com.sun.xml.ws.server.EndpointFactory.createEndpoint(EndpointFactory.java:202) 
    at com.sun.xml.ws.api.server.WSEndpoint.create(WSEndpoint.java:496) 
    at com.sun.xml.ws.api.server.WSEndpoint.create(WSEndpoint.java:539) 
    at weblogic.wsee.jaxws.JAXWSDeployedServlet.getEndpoint(JAXWSDeployedServlet.java:183) 

看來,嵌入式Web邏輯使用內部庫,而不是提供一個從JDK。 JDK中存在類RuntimeModelerTypeReference rt.jar以package com.sun.xml.ws.internal開頭。 Weblogic正在從glassfish.jaxb_1.0.0.0_2-1-12.jar挑選這些類,其中glassfish.jaxws.rt_1.2.0.0_2-1-5.jar爲&,但這些jar不屬於我的應用程序。

  1. 我已經使用的weblogic.xml下面的標籤,

    <prefer-web-inf-classes>true</prefer-web-inf-classes> 
    
  2. 我試着在默認域/ lib目錄下添加JAXWS-api.jar中& JWS-api.jar文件,但沒」 t工作

任何線索如何解決此異常或如何強制weblogic使用jdk運行時類?相同的應用程序可以在獨立的weblogic上正常工作。

+0

你有沒有找到答案? – Nick

回答

1

我有同樣的問題,在這裏找到了答案:http://www.intropro.com/resources/blog/66-argument-s-type-can-t-be-null

總之 - 出現的問題,因爲你已經在你的classpath它覆蓋WebLogics自己JAXB JAXB-implement執行,你可能不明確從你的pom.xml引用這個依賴關係,但你的其他一些依賴關係可以。 在我的情況下,我有apache-cxf作爲maven依賴項,它具有jaxb 2.1.13作爲範圍爲「compile」的子依賴項。我所要做的就是排除這個apaches jaxb,並添加我自己的依賴範圍「provided」來顯式使用WebLogics jaxb。

在pom.xml中它是這樣的:

<dependency> 
    <groupId>org.apache.cxf</groupId> 
    <artifactId>cxf-rt-frontend-jaxws</artifactId> 
    <version>2.7.2</version> 
    <exclusions> 
     <exclusion> 
      <artifactId>jaxb-impl</artifactId> 
      <groupId>com.sun.xml.bind</groupId> 
     </exclusion> 
    </exclusions> 
</dependency> 

<dependency> 
    <groupId>com.sun.xml.bind</groupId> 
    <artifactId>jaxb-impl</artifactId> 
    <scope>provided</scope> 
    <version>2.1.13</version> 
</dependency> 

您可以使用的pom.xml鑑於日食「依賴層次結構」選項卡或者乾脆命令行「MVN依賴:樹」,以瞭解如何jaxb- impl將它傳遞給你的類路徑。

0

在我的情況下,我有一個操作參數的錯字,其中兩個參數具有相同的webParam名稱。修改並部署,問題已解決。