wildfly 10 为啥部署不了cxf应用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了wildfly 10 为啥部署不了cxf应用相关的知识,希望对你有一定的参考价值。

参考技术A WildFly 曾用名:JBoss Application Server ,红帽公司宣布 JBoss AS 的继任者 WildFly,WildFly 将推动下一代应用服务器技术的发展,这个项目的名字是 JBoss.org 社区成员在 2012 年底投票产生。
WildFly 将继续保留 JBoss 企业应用平台并定位一些关键的中间件技术,包括更灵活和更先进的应用开发,实现开放混合云和 Java EE 7.
实验平台:CentOS 7.2
软件: wildfly-10.0.0.Final.zip jdk-8u77-linux-x64.tar quickstart-10.x.zip apache-maven-3.3.9-bin.zip
步骤:
1.搭建jdk平台
wildfly 10 要求在JDK 8以上平台运行
# tar zxf jdk-8u77-linux-x64.tar.gz && rm -rf jdk-8u77-linux-x64.tar
# mv jdk-1.8.0_77/ /usr/local/jdk
#vim /etc/profile.d/java.sh
JAVA_HOME=/usr/local/jdk
JAVA_BIN=$JAVA_HOME/bin
JRE_HOME=$JAVA_HOME/jre
PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin
CLASSPATH=$JAVA_HOME/jre/lib:$JAVA_HOME/lib:$JAVA_HOME/jre/lib/charsets.jar
# source /etc/profile.d/java.sh
# java -version
java version "1.8.0_77"
Java(TM) SE Runtime Environment (build 1.8.0_77-b03)
Java HotSpot(TM) 64-Bit Server VM (build 25.77-b03, mixed mode)

如何从 Wildfly (Jboss) 为 ws 端点访问 CXF jar

【中文标题】如何从 Wildfly (Jboss) 为 ws 端点访问 CXF jar【英文标题】:How to access CXF jars from Wildfly (Jboss) for ws endpoints 【发布时间】:2015-06-07 01:31:34 【问题描述】:

我尝试在 Wildfly 8.2 中部署我的战争文件。我的应用程序将 org.apache.cxf 用于 Web 服务。但是 Wildfly (Jboss) 默认带有自己的 cxf jar,可以提供完整的 Java EE 支持。我可以通过

消除 jboss cxf 并利用我自己的 cxf jars 进行 Web 服务

jboss-deployment-structure.xml

<jboss-deployment-structure>
    <deployment>
        <exclude-subsystems>
            <subsystem name="webservices" />
        </exclude-subsystems>
    </deployment>
</jboss-deployment-structure>

但它会禁用 jboss 对 ws 的支持,这意味着我什至无法在 Jboss 管理控制台中找到 ws 端点。但是我的客户需要利用 jboss 内置的 ws 功能,以便他可以随时禁用或启用任何 ws 调用。有谁知道如何配置我的应用程序以利用 jboss 的 cxf jar,以便我可以随时在 Jboss 管理控制台中调整我的 ws。以下链接解释了我到目前为止提到的完全相同的内容。我成功使用了第一个选项,但我需要它才能使用第二个选项。

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

注意:见第一个主题(JBoss 应用服务器)

我似乎无法弄清楚如何配置我的应用程序以利用 jboss 的 cxf jars..!

如果我从 build.gradle 文件中删除所有 org.apache.cxf 依赖项,它会给出 ClassNotFoundException 错误,这实际上告诉我它可以找到 cxf-transport jar。

Caused by: org.jboss.as.server.deployment.DeploymentUnitProcessingException: java.lang.ClassNotFoundException: org.apache.cxf.transport.servlet.CXFServlet

如果我在 build.gradle 文件中包含 org.apache.cxf 依赖项,则表明它与 Jboss 中也存在的 cxf jar 冲突。整个问题是我需要通过消除用户定义的 cxf jar 来利用 jboss 中存在的 cxf 来获得完整的 Java EE 支持。

【问题讨论】:

看看docs.jboss.org/author/display/WFLY8/… 谢谢 Federico.. 这就是我一直在寻找的确切解决方案.. 【参考方案1】:

这可能与其他一些依赖项重叠,这意味着不同的版本。

我遇到了同样的情况,不得不测试并从 org.apache.cxf 中删除所有不合时宜的内容,尤其是已弃用的内容,例如:

cxf-rt-rs-extension-providers, cxf-distribution-manifest, cxf-bundle-jaxrs 和 cxf-rt-frontend-jaxrs.

对所有人使用$cxf.version 对保持兼容性很重要 org.apache.cxf,尤其是更高版本,如果其他依赖项引入了较旧的 cxf 库,请检查依赖层次结构。

【讨论】:

以上是关于wildfly 10 为啥部署不了cxf应用的主要内容,如果未能解决你的问题,请参考以下文章

为啥 Wildfly 10 在部署时给我“jdbc:postgresql 不允许空名称段”?

如何从 Wildfly (Jboss) 为 ws 端点访问 CXF jar

将 Spring Boot 部署到 Wildfly 10

带有 PostgreSQL 9.4 数据源的 WildFly 10 部署应用程序时出错

如何在 WildFly 10 中将爆炸战争部署为文件夹

Wildfly 无法部署应用程序(FileNotFoundException - 访问被拒绝)