2012-07-31 15 views
6

Tôi có một chương trình hàng loạt độc lập chạy trên jdk1.6.0_31. Chương trình độc lập này có máy khách JAX-WS và máy khách EJB. Máy khách JAX-WS hoạt động tốt mà không cần thêm bất kỳ lọ nào cho đến khi tôi thêm wlfullclient.jar cho máy khách EJB. Bây giờ với wlfullclient.jar trong classpath tôi nhận được ngoại lệ dưới đây. Vui lòng cho tôi biết cách giải quyết vấn đề này. Đánh giá cao sự giúp đỡ của bạn.Máy khách JAX-WS đã hoạt động tốt cho đến khi wlfullclient.jar được thêm vào

Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/xml/ws /spi/ProviderImpl 
at java.lang.ClassLoader.defineClass1(Native Method) 
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631) 
at java.lang.ClassLoader.defineClass(ClassLoader.java:615) 
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141) 
at java.net.URLClassLoader.defineClass(URLClassLoader.java:283) 
at java.net.URLClassLoader.access$000(URLClassLoader.java:58) 
at java.net.URLClassLoader$1.run(URLClassLoader.java:197) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.net.URLClassLoader.findClass(URLClassLoader.java:190) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:306) 
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:247) 
at javax.xml.ws.spi.FactoryFinder.safeLoadClass(FactoryFinder.java:150) 
at javax.xml.ws.spi.FactoryFinder.newInstance(FactoryFinder.java:30) 
at javax.xml.ws.spi.FactoryFinder.find(FactoryFinder.java:90) 
at javax.xml.ws.spi.Provider.provider(Provider.java:83) 
at javax.xml.ws.Service.<init>(Service.java:56) 
at javax.xml.ws.Service.create(Service.java:691) 

Trả lời

1

Bạn có may mắn với điều này không? Tôi đang chạy vào chính xác cùng một vấn đề đang chạy trên JetSpeed ​​2.2.2 (máy chủ cổng thông tin dựa trên tomcat). Trước khi tôi đưa wlfullclient.jar vào thư mục lib của máy chủ, dịch vụ web của tôi hoạt động tốt. Sau khi bao gồm nó thổi lên trên instantiation với chính xác stack theo dõi bạn bao gồm ở trên.

suy nghĩ của tôi (lý thuyết ở giai đoạn này) là như sau:

wlfullclient.jar có một lớp học có cùng tên và gói như là một lớp đã có trong Metro dịch vụ web stack. Lớp này đang được nạp trước lớp Metro và sau đó hướng dẫn tải lớp xuống một con đường tải triển khai thực hiện logic web thay vì triển khai tàu điện ngầm. Việc triển khai logic web không tồn tại (không giống như chúng tôi đã nỗ lực đưa chúng vào khi chúng ta muốn sử dụng java tiêu chuẩn) và điều này giải thích NoClassDefFound.

Điều đáng lưu ý là tôi chưa tìm thấy lớp được giả định này có cùng tên và gói trong cả Metro và wlfullclient.jar. Theo nghĩa này, lớp học giống như boson của Higgs tại thời điểm này. Sau đó, giả sử nó tồn tại, phải làm gì với nó?

Tôi muốn biết liệu bạn có tìm được giải pháp hay không.

Ngoài ra tôi nên thêm:

Tôi cần phải bao gồm wlfullclient.jar vì nó được sử dụng bởi các portlet khác chạy trên cùng một máy chủ. Tôi không thể loại bỏ nó nhưng tôi không sử dụng nó.

+0

Vui lòng cung cấp câu trả lời nếu bạn đã tìm thấy câu trả lời. Cảm ơn. – MeIr

+0

Tương tự như vậy cho bạn :) Chưa có giải pháp nào. Tôi đã làm việc trên các dự án khác nhưng chắc chắn sẽ tiếp tục cố gắng giải quyết vấn đề này khi tôi trở lại trong không gian đó. –

2

Chúng tôi đã có cùng một vấn đề, sau khi nghiên cứu và tìm câu hỏi này, tôi đã theo một linh cảm và xem xét tài liệu hướng dẫn cho Máy chủ Weblogic.

Tôi đang tìm kiếm Khách hàng thay thế.

Về cơ bản có ba lọ khách hàng:

  • wlclient.jar - cho IIOP khách hàng
  • wlfullclient.jar - cho mọi thứ trong một jar (kích thước khổng lồ ~ 50MB)
  • wlthint3client.jar - cho một khách hàng t3 rất mỏng

Tùy chọn cuối cùng là phiên bản rút gọn của khách hàng có hỗ trợ giao thức độc quyền Web3. Nó có một số nhược điểm về chức năng, nhưng nếu tất cả những gì bạn cần làm là nói chuyện với một ejb trên máy chủ: đó là tất cả ở đó.

Sau khi chuyển đổi dạng wlfullclient.jar thành wlthint3client.jar, tất cả NoClassDefFoundError đều không còn.

Đây là liên kết đến Weblogic Documentation.

+0

Có, thay thế wlfullclient bằng wlthint3client.jar sẽ khắc phục vấn đề này – Doss

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