【问题标题】:cxf webservice in standalone spring application packaged as jar-with-dependencies using maven使用 maven 将独立 Spring 应用程序中的 cxf webservice 打包为 jar-with-dependencies
【发布时间】:2012-06-09 20:53:32
【问题描述】:

运行“java -jar my-app-0.0.1-SNAPSHOT-jar-with-dependencies.jar”之类的打包应用时,出现以下错误:

org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException: Line 47 in
XML document from URL [jar:file:/.../cxf/javafirst/target/my-app-0.0.1-SNAPSHOT-jar-with-dependencies.jar!/application-context.xml]
is invalid; nested exception is org.xml.sax.SAXParseException; lineNumber: 47; 
columnNumber: 61; cvc-complex-type.3.2.2: Attribute 'sendServerVersion'
is not allowed to appear in element 'httpj:engine'.

这是由于 apache.org 上发布的过时 http-jetty.xsd 架构造成的。那不是我的问题。我的问题是,在以下情况下不会发生这种情况:

maven jetty:run

maven exec:java

服务直接针对解压后的二进制目录运行,显然可以找到更新且正确的 http-jetty.xsd 架构文件。

我基本上想做一件事:

将 web 服务放入一个包含依赖项的 jar 中。这还应该包括所有 XML 模式文件,因为显然,使 Web 服务依赖于外部资源并不是一个好主意。

使用 maven 最好的方法是什么?

我可能幼稚的解决方案是将 XML 模式文件手动复制到资源目录中,并告诉 CXF 在 jar 文件中解析它们。因此,我有两个更具体的问题:

1.) 是否可以让 maven 找到 XML 模式文件并将它们复制到适当的位置? 2.) 让 CXF 在 jar 文件中查找模式文件的推荐方法是什么?

3.) 有没有更好的最佳实践解决方案来解决这个问题?

我关于 maven 程序集插件的 maven 配置是 http://maven.apache.org/plugins/maven-assembly-plugin/usage.html 的最后两个部分的直接组合。

【问题讨论】:

    标签: maven xsd cxf


    【解决方案1】:

    Spring 有一个非常好的机制来解析它需要的架构文件——它通常根本不从网络下载它,而是使用 jar 文件中的本地可用文件来获取架构并验证 xml,例如。考虑 Spring 中的上下文自定义命名空间架构,如果您查看 spring-context.jar 文件中的 META-INF/spring.schemas 文件,您将看到以下几行的条目:

    http\://www.springframework.org/schema/context/spring-context-3.1.xsd=org/springframework/context/config/spring-context-3.1.xsd

    基本上它的意思是从类路径org.springframework.context.config.spring-context-3.1.xsd文件中解析spring-context-3.1.xsd文件

    这也适用于任何第三方库,在您的情况下是 http-jetty.xsd。

    我想我会推荐的是简单地在 META-INF/ 文件夹中的 jar 文件中创建一个 spring.schemas 文件,为架构的完整路径添加一个条目,并将其替换为 http-jetty 的类路径版本.xsd.

    【讨论】:

      猜你喜欢
      • 2011-07-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-31
      • 2021-08-27
      • 2013-03-13
      • 2017-05-17
      相关资源
      最近更新 更多