2013-01-11 42 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名称。修改并部署,问题已解决。