web-services - 如何将 Apache CXF Web 服务部署到 Glassfish

标签 web-services jakarta-ee cxf jsr250

我有一个使用 Apache CXF 生成和构建的 Web 服务客户端。接下来我有 JAX-RS Jersey 应用程序,我想在其中调用来自该 Web 服务的方法。当我尝试将这个简单的项目部署到 Glassfish 4.0 服务器时,出现以下异常:

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.

命令部署失败。

我在这个项目中唯一的一个 CXF 依赖是:
    <dependency>
        <groupId>org.apache.cxf</groupId>
        <artifactId>cxf-bundle-jaxrs</artifactId>
        <version>2.7.6</version>
        <type>jar</type>
        <scope>runtime</scope>
    </dependency>

是否有任何其他与 JSR 250 兼容的 CXF 库?
谢谢

最佳答案

Glassfish 的挑战之一是完整的服务器配置文件与用于 JAX-WS Web 服务的 Metro 和用于 JAX-RS 其余服务的 Jersey 打包在一起。建议通过 WAR 的 WEB-INF 文件夹中包含的 sun-web.xml 文件配置类加载器。应包括以下内容:

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

以前我发现偶尔部署还是有问题;因此,我实际上已经从 Glassfish 服务器配置文件中完全删除了 Metro 和 Jersey 功能。以下是有关部署的更多信息。

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

我注意到的另一件事是您发布了一条包含 Jetty 传输的日志消息。这意味着您正在运行 Jetty HTTP 服务器并运行 Glassfish HTTP 服务器。我建议只使用 Glassfish 作为 Web 服务器并改用 CXF servlet 传输。

关于web-services - 如何将 Apache CXF Web 服务部署到 Glassfish,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19045664/

相关文章:

java - 使用 DAO 和 Web 服务的数据库插入方法的 Junit 测试用例

c# - 为什么我不能将此对象作为参数传递?

wcf - 将较大的文件 (200MB) 上传到保管箱

java - activeMQ 如何能够执行不在其类路径中的类

java - 使用 JAXB 数据绑定(bind)的基于 CXF WSDL 的通用服务器

java - 没有附件的 SOAPMessage writeTo

java - Weblogic 中的 JSTL 支持

java - 仅通过类型参数创建泛型类?

web-services - 如何在安静的服务中提供 kerberos/spnego 支持?

java - Camel cxf :cxfEndpoint Producer error : Can't find the BindingOperationInfo with operation name