2013-01-11 36 views
5

Tôi đang cố gắng chạy ứng dụng của mình có chứa JAX WS (2.1) Webservice bằng cách sử dụng JDeveloper 11g R2 (11.1.2.3.0) trong JDK 1.6.0_31-b05. Lỗi xuất hiện từ chú thích @WebService trên lớp.
Khi tôi đang chạy ứng dụng, tôi nhận được dưới đây lỗi,@Webservice chú thích ngoại lệ trên 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) 

Dường như nhúng Web logic được sử dụng thư viện nội bộ thay vì cung cấp một từ JDK. Các lớp RuntimeModeler hoặc TypeReference có mặt trong JDK rt.jar bắt đầu bằng gói com.sun.xml.ws.internal. Weblogic đang chọn các lớp này từ glassfish.jaxb_1.0.0.0_2-1-12.jar & glassfish.jaxws.rt_1.2.0.0_2-1-5.jar, nhưng các lọ này không phải là một phần của ứng dụng của tôi.

  1. Tôi đã sử dụng weblogic.xml với bên dưới thẻ,

    <prefer-web-inf-classes>true</prefer-web-inf-classes> 
    
  2. Tôi đã thử thêm jaxws-api.jar & JWS-api.jar trong DefaultDomain/thư mục lib, nhưng didn rằng' t work

Bất kỳ đầu mối nào giải quyết ngoại lệ này hoặc cách ép buộc weblogic sử dụng các lớp thời gian chạy jdk? Ứng dụng tương tự hoạt động bình thường trên weblog độc lập.

+0

Bạn đã bao giờ tìm thấy câu trả lời cho điều này chưa? – Nick

Trả lời

1

tôi đã cùng một vấn đề và tìm thấy câu trả lời ở đây: http://www.intropro.com/resources/blog/66-argument-s-type-can-t-be-null

Nói tóm lại - các vấn đề xuất hiện vì bạn đã JAXB-impl trong bạn classpath mà đè WebLogics jaxb riêng, Bạn có thể không rõ ràng đề cập đến sự phụ thuộc này từ tệp pom.xml của bạn, nhưng một số phụ thuộc khác của bạn thực hiện. Trong trường hợp của tôi, tôi đã apache-cxf là phụ thuộc maven và nó có jaxb 2.1.13 là phụ thuộc phụ với phạm vi "biên dịch". Tất cả những gì tôi phải làm là loại trừ apache jaxb này và thêm sự phụ thuộc của riêng tôi với phạm vi "được cung cấp" để sử dụng một cách rõ ràng jaxb WebLogics.

trong pom.xml nó trông như thế này:

<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> 

Bạn có thể sử dụng che khuất "phụ thuộc Hierarchy" tab theo quan điểm pom.xml hoặc đơn giản là dòng lệnh "phụ thuộc mvn: cây" để tìm hiểu làm thế nào jaxb- impl đã đưa nó vào classpath của bạn.

0

Trong trường hợp của tôi, tôi đã có lỗi đánh máy trong các đối số của phép toán, trong đó hai đối số có cùng tên webParam. Đã sửa đổi và triển khai, sự cố đã được giải quyết.

Các vấn đề liên quan