2013-09-27 202 views
6

Tôi có một khách hàng dịch vụ web được tạo và xây dựng với Apache CXF. Tiếp theo tôi có ứng dụng JAX-RS Jersey mà tôi muốn gọi các phương thức từ dịch vụ web đó. Khi tôi cố gắng triển khai dự án đơn giản này đến máy chủ Glassfish 4.0, tôi nhận được ngoại lệ này:Cách triển khai dịch vụ web Apache CXF cho Glassfish

Exception while deploying the app [pelijee] : 
The lifecycle method [finalizeConfig] must not throw a checked exception. 
Related annotation information: annotation [@javax.annotation.PostConstruct()] on annotated element [public void org.apache.cxf.transport.http_jetty.JettyHTTPServerEngine.finalizeConfig() throws java.security.GeneralSecurityException,java.io.IOException] of type [METHOD]. Please see server.log for more details. 

Triển khai lệnh không thành công.

Là người duy nhất CXF phụ thuộc tôi có trong dự án này là:

<dependency> 
     <groupId>org.apache.cxf</groupId> 
     <artifactId>cxf-bundle-jaxrs</artifactId> 
     <version>2.7.6</version> 
     <type>jar</type> 
     <scope>runtime</scope> 
    </dependency> 

Có bất kỳ thư viện CXF khác tương thích với JSR 250? Cảm ơn bạn

+0

https://issues.apache.org/jira/browse/CXF-5483 thực hiện điều này có hữu ích không? – alkis

Trả lời

0

Một trong những thách thức của Glassfish là cấu hình máy chủ đầy đủ được đóng gói cùng với dịch vụ web của Metro cho JAX-WS và dịch vụ nghỉ ngơi của Jersey cho JAX-RS. Bạn nên cấu hình trình nạp lớp thông qua tệp sun-web.xml có trong thư mục WEB-INF của WAR của bạn. Cần bao gồm các nội dung sau:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE sun-web-app PUBLIC 
    '-//Sun Microsystems, Inc.//DTD Application Server 9.0 Servlet 2.5//EN' 
    'http://www.sun.com/software/appserver/dtds/sun-web-app_2_5-0.dtd'> 
    <sun-web-app> 
     <class-loader delegate="false"/> 
    </sun-web-app> 

Trước đây, tôi thấy rằng đôi khi tôi vẫn gặp sự cố triển khai; do đó, tôi đã thực sự loại bỏ các tính năng Metro và Jersey hoàn toàn từ hồ sơ máy chủ Glassfish. Dưới đây là một số thông tin khác về triển khai.

http://cxf.apache.org/docs/application-server-specific-configuration-guide.html

Một điều tôi nhận thấy thêm là bạn gửi một thông điệp log trong đó bao gồm việc vận chuyển Jetty. Điều này có nghĩa là bạn đang chạy máy chủ HTTP Jetty và chạy máy chủ HTTP Glassfish. Tôi khuyên bạn chỉ nên sử dụng Glassfish làm máy chủ web và sử dụng phương tiện vận chuyển servlet CXF thay thế.