rsclient org jaxrs java web-services cxf woodstox

java - org - jaxrs client client



CXF 2.7.x Compatibilidad con Woodstox a través de Maven (3)

En la documentación de CXF se dice que la versión 2.7.x requiere que los tarros Woodstox que no están bajo la versión 4.2.0 estén disponibles en el classpath.

¿Puede alguien, por favor, sugerir dependencias de Maven para que Woodstox trabaje con CXF?

El principal problema es cuando trato de usar el cliente de cxf, se genera una excepción "No se puede crear un XMLInputFactory seguro". Según diferentes foros ( por ejemplo ), es posible usar la propiedad del sistema "org.apache.cxf.stax.allowInsecureParser" para resolver el problema, pero parece que no es una buena manera. Entonces, las dependencias de maven son el camino a seguir ...

Gracias por adelantado.


La única forma por la que ahora puedo resolver el problema es agregar tales líneas en el contexto de la primavera:

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


Bueno, finalmente tengo una solución. Antes que nada, me gustaría agradecerle a StaxMan por su ayuda.

Mi entorno es: Weblogic 11g, CXF 2.7.5

El problema es que WLS ya contiene implementaciones para la API StAX y los analizadores xml, razón por la cual una aplicación no ve el analizador Woodstox cuando usa CXF.

Aquí está el 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>

y la parte principal - weblogic-application.xml ubicada en los recursos / META-INF /:

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

Tenga en cuenta el hecho de que, de ser así, pueden producirse los errores "NoClassDefinition". Si es así, por favor, agregue dependencias maven que contengan clases faltantes.

Espero que esto ayude a alguien.


Esto funcionó para mí sin prefer-application-packages 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>