Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java CXF 2.7.x Woodstox通过Maven的兼容性_Java_Web Services_Cxf_Woodstox - Fatal编程技术网

Java CXF 2.7.x Woodstox通过Maven的兼容性

Java CXF 2.7.x Woodstox通过Maven的兼容性,java,web-services,cxf,woodstox,Java,Web Services,Cxf,Woodstox,在CXF的文档中,据说2.7.x版本要求在类路径中提供不在4.2.0版本下的Woodstox JAR 有人能建议Woodstox使用Maven依赖项与CXF一起工作吗? 主要问题是,当我尝试使用cxf的客户机时,出现了一个异常“无法创建安全的XMLInputFactory”。根据不同的论坛(),可以使用“org.apache.cxf.stax.allowInsecureParser”系统属性来解决问题,但这似乎不是一个好方法。所以maven依赖关系是一条路要走 提前感谢。现在我唯一能解决这个问题

在CXF的文档中,据说2.7.x版本要求在类路径中提供不在4.2.0版本下的Woodstox JAR

有人能建议Woodstox使用Maven依赖项与CXF一起工作吗?

主要问题是,当我尝试使用cxf的客户机时,出现了一个异常“无法创建安全的XMLInputFactory”。根据不同的论坛(),可以使用“org.apache.cxf.stax.allowInsecureParser”系统属性来解决问题,但这似乎不是一个好方法。所以maven依赖关系是一条路要走


提前感谢。

现在我唯一能解决这个问题的方法是在spring的上下文中添加这样的行:

<bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
    <property name="targetObject">
        <bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
            <property name="targetClass" value="java.lang.System" />
            <property name="targetMethod" value="getProperties" />
        </bean>
    </property>
    <property name="targetMethod" value="putAll" />
    <property name="arguments">
        <util:properties>
            <prop key="org.apache.cxf.stax.allowInsecureParser">true</prop>
        </util:properties>
    </property>
</bean>

真的

好了,我终于找到了解决办法。首先我要感谢斯塔克斯曼的帮助

我的环境是: Weblogic 11g,CXF 2.7.5

问题是WLS已经包含了STAXAPI和xml解析器的实现,这就是为什么应用程序在使用CXF时看不到Woodstox解析器的原因

以下是pom.xml文件:

        <!-- CXF -->
        <dependency>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-api</artifactId>
        </dependency>

        <dependency>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-rt-frontend-jaxws</artifactId>
        </dependency>

        <dependency>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-rt-transports-http</artifactId>
        </dependency>

org.apache.cxf
cxfapi
org.apache.cxf
cxf rt前端jaxws
org.apache.cxf
cxf rt传输http
主要部分——位于参考资料/META-INF/中的weblogic-application.xml:

    <prefer-application-packages>
        <package-name>com.ctc.wstx.*</package-name>
        <package-name>org.apache.*</package-name>
    </prefer-application-packages>

com.ctc.wstx*
org.apache*
请注意,如果这样做,可能会出现“NoClassDefinition”错误。如果是这样,请添加包含缺少类的maven依赖项


希望这对某人有所帮助。

这对我来说很有用,但我不喜欢应用程序包impl:

<dependency>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-rt-frontend-jaxws</artifactId>
            <version>${cxf.version}</version>
            <exclusions>
                <exclusion>
                    <groupId>com.sun.xml.bind</groupId>
                    <artifactId>jaxb-impl</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <dependency>
            <groupId>com.sun.xml.bind</groupId>
            <artifactId>jaxb-impl</artifactId>
            <version>2.2.2</version>
        </dependency>
        <dependency>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-rt-transports-http</artifactId>
            <version>${cxf.version}</version>
        </dependency>
        <!-- Jetty is needed if you're using the CXFServlet -->
        <dependency>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-rt-transports-http-jetty</artifactId>
            <version>${cxf.version}</version>
        </dependency>

org.apache.cxf
cxf rt前端jaxws
${cxf.version}
com.sun.xml.bind
jaxb impl
com.sun.xml.bind
jaxb impl
2.2.2
org.apache.cxf
cxf rt传输http
${cxf.version}
org.apache.cxf
cxf rt传输http jetty
${cxf.version}

为什么不更新到Woodstox 4.2.0?它具有与4.0和4.1相同的组和工件ID。是的,我尝试添加woodstox core asl 4.2.0 maven依赖项和woodstox stax2 api,但无论如何都会引发“无法创建安全的XMLInputFactory”异常。是否可能以某种方式将多个Stax实现作为依赖项包括在内(比如BEA的参考实现,或者Sun SJSXP显式添加)?嗯,我认为这是可能的。您知道如何排除这些依赖项,或者如何设置首选项(Woodstox)在.pom文件中实现cxf?这实际上是特定于cxf的。但您可以显式地排除pom中包含的其他内容;首先需要查看它们是否加入(使用“mvn dependency:tree”)。问题是,如果CXF使用SPI样式的stax impl检测,则未指定选项之间的优先顺序。但它可能有特定的覆盖。我的朋友,这很漂亮。Thanx很多:),我认为它不是weblogic的选项10@Neron,我认为您的WLS中仍有一些包阻止了配置。请参考这篇文章。我已经添加了你在解决方案中给出的必要内容,但没有帮助。这应该没有那么痛苦:(很遗憾,但对于CXF来说,除了基本示例之外,要使某些东西正常工作总是非常困难的。一些人建议排除“javax.xml.*”包(使用“首选应用程序包”).你试过这个吗?这个方法也在上面的帖子中给出。谢谢Dmitry,我也有同样的问题,现在它已经解决了@2787184提到的链接是broken@AzhaguSurya:似乎已被社区删除。