【问题标题】:No DestinationFactory was found for the namespace - create uber JAR of CXF with Jetty没有为命名空间找到 DestinationFactory - 使用 Jetty 创建 CXF 的 uber JAR
【发布时间】:2016-08-28 23:58:32
【问题描述】:

我想为基于 CXF 的应用程序服务器创建一个 uber JAR。我想使用java -jar 从命令行运行服务器。在 IDE 中,我可以运行主类 com.connexta.desertcodecamp.Server,但我没有正确创建 uber jar。

当我运行命令java -jar server-1.0-SNAPSHOT.jar 时,我得到了

org.apache.cxf.service.factory.ServiceConstructionException
        at org.apache.cxf.jaxrs.JAXRSServerFactoryBean.create(JAXRSServerFactoryBean.java:215)
        at com.connexta.desertcodecamp.Server.<init>(Server.java:19)
        at com.connexta.desertcodecamp.Server.main(Server.java:33)
Caused by: org.apache.cxf.BusException: No DestinationFactory was found for the namespace http://cxf.apache.org/transports/http.
        at org.apache.cxf.bus.managers.DestinationFactoryManagerImpl.getDestinationFactory(DestinationFactoryManagerImpl.java:122)
        at org.apache.cxf.endpoint.ServerImpl.initDestination(ServerImpl.java:79)
        at org.apache.cxf.endpoint.ServerImpl.<init>(ServerImpl.java:63)
        at org.apache.cxf.jaxrs.JAXRSServerFactoryBean.create(JAXRSServerFactoryBean.java:170)

这是 POM 文件(和 GitHub 存储库)的链接: https://github.com/ahoffer/desert-code-camp/blob/master/server/pom.xml

其他帖子引用了缺少的依赖项cxf-rt-transports-http,但我在 POM.xml 中将其作为依赖项。

【问题讨论】:

  • 你确定你有它在组合罐子里吗? 你是如何组合这些罐子的?
  • @bmargulies 我知道的不够多,无法回答这个问题。我不知道在这种情况下组合意味着什么。我将 cxf-rt-transports-http 作为 maven 依赖项包含在内。我假设所有依赖项都会进入阴影 JAR。

标签: maven cxf embedded-jetty uberjar


【解决方案1】:

解决方案在这里:apache camel - packaging an executable jar 在这里:Missing cxf.xml? Fails in maven, works in Eclipse

将此转换器和魔法资源添加到 maven shade 插件的配置部分修复它:

<transformer org.apache.maven.plugins.shade.resource.AppendingTransformer">
    <resource>META-INF/cxf/bus-extensions.txt</resource>
</transformer>

资源由插件生成;没有必要创建它

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-28
    • 2016-12-30
    • 1970-01-01
    • 2021-10-02
    • 2014-03-23
    • 1970-01-01
    • 2015-06-10
    相关资源
    最近更新 更多