spring maven cxf mtom

spring - java.lang.NoSuchFieldError: REFLEXIÓN



maven cxf (2)

O podría ser simplemente versiones diferentes de com.sun.xml.bind:jaxb-core y com.sun.xml.bind:jaxb-impl . Asegúrate de que sean iguales en tu dependency:tree .

Tuve -core v.2.2.11 y -impl v.2.2.6 en mi proyecto que condujo a la misma excepción. Después de configurar ambas versiones en 2.2.11 a través de dependencyManagement sección de administración de dependencyManagement , todo quedó bien.

Estoy creando un proyecto con CXF y uso MTOM con algo de seguridad (no sé si esa información es relevante).

Cuando intenté inicializar mi servidor, recibí ese error:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name ''example'': Invocation of init method failed; nested exception is java.lang.NoSuchFieldError: REFLECTION

Este es mi archivo cxf-servlet.xml:

<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:jee="http://www.springframework.org/schema/jee" xmlns:jaxws="http://cxf.apache.org/jaxws" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd"> <jaxws:endpoint id="example" address="/example" implementor="br.com.arthur.services.ExampleService"> <!-- Uncomment only if using WS-SecurityPolicy --> <jaxws:properties> <entry key="mtom-enabled" value="true" /> <entry key="ws-security.callback-handler" value-ref="myPasswordCallback" /> </jaxws:properties> <!-- Uncomment only if using standard WSS4J interceptors --> <!--jaxws:inInterceptors> <bean class="org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor"> <constructor-arg> <map> <entry key="action" value="UsernameToken"/> <entry key="passwordType" value="PasswordText"/> <entry key="passwordCallbackRef" value-ref="myPasswordCallback"/> </map> </constructor-arg> </bean> </jaxws:inInterceptors --> </jaxws:endpoint> <bean id="myPasswordCallback" class="br.com.arthur.services.ServerPasswordCallback" /> </beans>

Este es mi archivo web.xml

<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"> <display-name>Sample web service provider</display-name> <listener> <listener-class> org.springframework.web.context.ContextLoaderListener </listener-class> </listener> <context-param> <param-name>contextConfigLocation</param-name> <param-value> classpath:META-INF/cxf/cxf.xml </param-value> </context-param> <servlet> <servlet-name>WebServicePort</servlet-name> <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>WebServicePort</servlet-name> <url-pattern>/services/*</url-pattern> </servlet-mapping> <session-config> <session-timeout>60</session-timeout> </session-config> <security-constraint> <web-resource-collection> <web-resource-name>restricted web services</web-resource-name> <url-pattern>/*</url-pattern> <http-method>GET</http-method> <http-method>POST</http-method> </web-resource-collection> <user-data-constraint> <transport-guarantee>CONFIDENTIAL</transport-guarantee> </user-data-constraint> </security-constraint> </web-app>

Este es mi archivo pom.xml:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>br.com.arthur</groupId> <artifactId>security-mtom</artifactId> <packaging>war</packaging> <version>1.0.0</version> <properties> <cxf.version>3.0.1</cxf.version> <jdk.version>1.7</jdk.version> <maven-compiler.version>3.1</maven-compiler.version> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <spring.version>4.1.0.RELEASE</spring.version> </properties> <dependencies> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-core</artifactId> <version>2.7.12</version> </dependency> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-frontend-jaxws</artifactId> <version>${cxf.version}</version> </dependency> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-ws-security</artifactId> <version>${cxf.version}</version> </dependency> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-transports-http</artifactId> <version>${cxf.version}</version> </dependency> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-common-utilities</artifactId> <version>2.5.11</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>${spring.version}</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>${maven-compiler.version}</version> <configuration> <source>${jdk.version}</source> <target>${jdk.version}</target> <encoding></encoding> </configuration> </plugin> <plugin> <groupId>org.apache.cxf</groupId> <artifactId>cxf-codegen-plugin</artifactId> <version>${cxf.version}</version> <executions> <execution> <id>generate-sources</id> <phase>generate-sources</phase> <configuration> <sourceRoot>${project.basedir}/src/main/java</sourceRoot> <wsdlOptions> <wsdlOption> <wsdl>${project.basedir}/src/main/resources/wsdl/example.wsdl</wsdl> <wsdlLocation>classpath:wsdl/example.wsdl</wsdlLocation> </wsdlOption> </wsdlOptions> </configuration> <goals> <goal>wsdl2java</goal> </goals> </execution> </executions> </plugin> </plugins> </build> </project>

Intenté ejecutar esos dos tutoriales http://web-gmazza.rhcloud.com/blog/entry/cxf-usernametoken-profile y http://thenonsensetechlogs.wordpress.com/2011/05/09/mtom-using-apache-cxf-and-maven/


Tiene un conflicto entre las bibliotecas cxf-rt-frontend-jaxws y cxf-common-utilities. Ambos proporcionan como sus dependencias com.sun.xml.bind, que es la causa de su problema. Por lo tanto, debe excluir com.sun.xml.bind: jaxb-impl de cxf-common-utilities o eliminar su dependencia de cxf-common-utilities.