You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@cxf.apache.org by ac...@toulouse.viveris.com on 2014/03/25 10:31:04 UTC

cxf 2.7.10 throw AbractMethodError using javax.ws.rs-api-2.0-m10

Hi everybody!!

Server is configured with cxf (2.7.6 or 2.7.10), Spring 3.2.3 and 
jboss-as-7.2.
I encounter a problem using cxf and jaxb xsd validation. Here is the 
service declaration :

  	<jaxrs:server id="services" address="/">
		<jaxrs:serviceBeans>
			<bean class="com.myCompany.ServiceInterface" />
		</jaxrs:serviceBeans>
		 <jaxrs:providers>
  			<ref bean="JSONProvider" />
  			<ref bean="JAXBProvider" />
  			<ref bean="ExceptionHandler" />
  		</jaxrs:providers>
	 </jaxrs:server>

	<bean id="ExceptionHandler" 
class="com.myCompany.util.ExceptionHandler" />
	<bean id="JSONProvider" 
class="org.codehaus.jackson.jaxrs.JacksonJsonProvider" />

	<bean id="JAXBProvider" 
class="org.apache.cxf.jaxrs.provider.JAXBElementProvider">
		 <property name="singleJaxbContext" value="true" />
		<property name="marshallerProperties" ref="propertiesMap"/>
		 <property name="validateOutput" value="true" />
		<property ref="schemaHolder" name="schemaHandler"/>
	 </bean>

	<util:map id="propertiesMap">
  		<entry key="jaxb.formatted.output"><value 
type="java.lang.Boolean">true</value></entry>
	</util:map>

	<bean id="schemaHolder" 
class="org.apache.cxf.jaxrs.utils.schemas.SchemaHandler">
		<property name="schemas" ref="XMLISchemas"/> <!-- XMLIschemas 
contains the path of every xds to use -->
	</bean>

XSD validation functionnality work perferctly in both way and my 
erroneous payload (bad tag or bad value) are generating exception 
outside of my service code. This is great, but I'd like to produce a 
specific response to user in case of xsd validation exception. So I 
introduced the ExceptionHandler bean and I figured out that thrown 
exception was not the one expected (SAXParseException or 
UnmarshalException) but an AbstractMethodError.
Here is the (full) stacktrace :

17:55:30,314 INFO  [stdout] 24-03-14 16:55:30[WARN 
][o.a.c.j.p.AbstractJAXBProvider][javax.xml.bind.UnmarshalException
17:55:30,320 INFO  [stdout]  - with linked exception:
17:55:30,321 INFO  [stdout] [org.xml.sax.SAXParseException; lineNumber: 
4; columnNumber: 4; cvc-complex-type.2.4.a: Invalid content was found 
starting with element 'direct'. One of '{direction}' is expected.]
17:55:30,321 INFO  [stdout]        at 
com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.handleStreamException(UnmarshallerImpl.java:483)
17:55:30,321 INFO  [stdout]        at 
com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:417)
17:55:30,321 INFO  [stdout]        at 
com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:386)
17:55:30,322 INFO  [stdout]        at 
org.apache.cxf.jaxrs.provider.JAXBElementProvider.unmarshalFromInputStream(JAXBElementProvider.java:272)
17:55:30,322 INFO  [stdout]        at 
org.apache.cxf.jaxrs.provider.JAXBElementProvider.doUnmarshal(JAXBElementProvider.java:225)
17:55:30,322 INFO  [stdout]        at 
org.apache.cxf.jaxrs.provider.JAXBElementProvider.readFrom(JAXBElementProvider.java:184)
17:55:30,322 INFO  [stdout]        at 
org.apache.cxf.jaxrs.utils.JAXRSUtils.readFromMessageBodyReader(JAXRSUtils.java:1280)
17:55:30,322 INFO  [stdout]        at 
org.apache.cxf.jaxrs.utils.JAXRSUtils.readFromMessageBody(JAXRSUtils.java:1231)
17:55:30,323 INFO  [stdout]        at 
org.apache.cxf.jaxrs.utils.JAXRSUtils.processParameter(JAXRSUtils.java:782)
17:55:30,323 INFO  [stdout]        at 
org.apache.cxf.jaxrs.utils.JAXRSUtils.processParameters(JAXRSUtils.java:741)
17:55:30,323 INFO  [stdout]        at 
org.apache.cxf.jaxrs.interceptor.JAXRSInInterceptor.processRequest(JAXRSInInterceptor.java:254)
17:55:30,323 INFO  [stdout]        at 
org.apache.cxf.jaxrs.interceptor.JAXRSInInterceptor.handleMessage(JAXRSInInterceptor.java:90)
17:55:30,324 INFO  [stdout]        at 
org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:272)
17:55:30,324 INFO  [stdout]        at 
org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121)
17:55:30,324 INFO  [stdout]        at 
org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:239)
17:55:30,324 INFO  [stdout]        at 
org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:248)
17:55:30,324 INFO  [stdout]        at 
org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:222)
17:55:30,325 INFO  [stdout]        at 
org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:153)
17:55:30,325 INFO  [stdout]        at 
org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet.java:167)
17:55:30,325 INFO  [stdout]        at 
org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:286)
17:55:30,325 INFO  [stdout]        at 
org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPServlet.java:206)
17:55:30,326 INFO  [stdout]        at 
javax.servlet.http.HttpServlet.service(HttpServlet.java:754)
17:55:30,326 INFO  [stdout]        at 
org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:262)
17:55:30,326 INFO  [stdout]        at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:295)
17:55:30,326 INFO  [stdout]        at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214)
17:55:30,326 INFO  [stdout]        at 
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
17:55:30,327 INFO  [stdout]        at 
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:149)
17:55:30,327 INFO  [stdout]        at 
org.jboss.as.jpa.interceptor.WebNonTxEmCloserValve.invoke(WebNonTxEmCloserValve.java:50)
17:55:30,327 INFO  [stdout]        at 
org.jboss.as.jpa.interceptor.WebNonTxEmCloserValve.invoke(WebNonTxEmCloserValve.java:50)
17:55:30,327 INFO  [stdout]        at 
org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:169)
17:55:30,328 INFO  [stdout]        at 
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:145)
17:55:30,328 INFO  [stdout]        at 
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:97)
17:55:30,328 INFO  [stdout]        at 
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:102)
17:55:30,328 INFO  [stdout]        at 
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:336)
17:55:30,328 INFO  [stdout]        at 
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856)
17:55:30,329 INFO  [stdout]        at 
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:653)
17:55:30,329 INFO  [stdout]        at 
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:920)
17:55:30,329 INFO  [stdout]        at 
java.lang.Thread.run(Thread.java:722)
17:55:30,329 INFO  [stdout] Caused by: org.xml.sax.SAXParseException; 
lineNumber: 4; columnNumber: 4; cvc-complex-type.2.4.a: Invalid content 
was found starting with element 'direct'. One of '{direction}' is 
expected.
17:55:30,330 INFO  [stdout]        at 
org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(Unknown 
Source)
17:55:30,330 INFO  [stdout]        at 
org.apache.xerces.util.ErrorHandlerWrapper.error(Unknown Source)
17:55:30,330 INFO  [stdout]        at 
org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
17:55:30,330 INFO  [stdout]        at 
org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
17:55:30,330 INFO  [stdout]        at 
org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
17:55:30,331 INFO  [stdout]        at 
org.apache.xerces.impl.xs.XMLSchemaValidator$XSIErrorReporter.reportError(Unknown 
Source)
17:55:30,331 INFO  [stdout]        at 
org.apache.xerces.impl.xs.XMLSchemaValidator.reportSchemaError(Unknown 
Source)
17:55:30,331 INFO  [stdout]        at 
org.apache.xerces.impl.xs.XMLSchemaValidator.handleStartElement(Unknown 
Source)
17:55:30,331 INFO  [stdout]        at 
org.apache.xerces.impl.xs.XMLSchemaValidator.startElement(Unknown 
Source)
17:55:30,331 INFO  [stdout]        at 
org.apache.xerces.jaxp.validation.ValidatorHandlerImpl.startElement(Unknown 
Source)
17:55:30,332 INFO  [stdout]        at 
com.sun.xml.bind.v2.runtime.unmarshaller.ValidatingUnmarshaller.startElement(ValidatingUnmarshaller.java:101)
17:55:30,332 INFO  [stdout]        at 
com.sun.xml.bind.v2.runtime.unmarshaller.StAXStreamConnector.handleStartElement(StAXStreamConnector.java:246)
17:55:30,332 INFO  [stdout]        at 
com.sun.xml.bind.v2.runtime.unmarshaller.StAXStreamConnector.bridge(StAXStreamConnector.java:180)
17:55:30,332 INFO  [stdout]        at 
com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:415)
17:55:30,333 INFO  [stdout]        ... 36 more
17:55:30,334 ERROR 
[org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/server].[CXFServlet]] 
JBWEB000236: Servlet.service() for servlet CXFServlet threw exception: 
java.lang.AbstractMethodError: 
javax.ws.rs.core.Response.getStatusInfo()Ljavax/ws/rs/core/Response$StatusType;
         at 
javax.ws.rs.WebApplicationException.validate(WebApplicationException.java:186) 
[javax.ws.rs-api-2.0-m10.jar:2.0-m10]
         at 
javax.ws.rs.ClientErrorException.<init>(ClientErrorException.java:127) 
[javax.ws.rs-api-2.0-m10.jar:2.0-m10]
         at 
javax.ws.rs.BadRequestException.<init>(BadRequestException.java:92) 
[javax.ws.rs-api-2.0-m10.jar:2.0-m10]
         at 
org.apache.cxf.jaxrs.provider.AbstractJAXBProvider.handleExceptionEnd(AbstractJAXBProvider.java:688) 
[cxf-rt-frontend-jaxrs-2.7.10.jar:2.7.10]
         at 
org.apache.cxf.jaxrs.provider.AbstractJAXBProvider.handleJAXBException(AbstractJAXBProvider.java:700) 
[cxf-rt-frontend-jaxrs-2.7.10.jar:2.7.10]
         at 
org.apache.cxf.jaxrs.provider.JAXBElementProvider.readFrom(JAXBElementProvider.java:198) 
[cxf-rt-frontend-jaxrs-2.7.10.jar:2.7.10]
         at 
org.apache.cxf.jaxrs.utils.JAXRSUtils.readFromMessageBodyReader(JAXRSUtils.java:1280) 
[cxf-rt-frontend-jaxrs-2.7.10.jar:2.7.10]
         at 
org.apache.cxf.jaxrs.utils.JAXRSUtils.readFromMessageBody(JAXRSUtils.java:1231) 
[cxf-rt-frontend-jaxrs-2.7.10.jar:2.7.10]
         at 
org.apache.cxf.jaxrs.utils.JAXRSUtils.processParameter(JAXRSUtils.java:782) 
[cxf-rt-frontend-jaxrs-2.7.10.jar:2.7.10]
         at 
org.apache.cxf.jaxrs.utils.JAXRSUtils.processParameters(JAXRSUtils.java:741) 
[cxf-rt-frontend-jaxrs-2.7.10.jar:2.7.10]
         at 
org.apache.cxf.jaxrs.interceptor.JAXRSInInterceptor.processRequest(JAXRSInInterceptor.java:254) 
[cxf-rt-frontend-jaxrs-2.7.10.jar:2.7.10]
         at 
org.apache.cxf.jaxrs.interceptor.JAXRSInInterceptor.handleMessage(JAXRSInInterceptor.java:90) 
[cxf-rt-frontend-jaxrs-2.7.10.jar:2.7.10]
         at 
org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:272) 
[cxf-api-2.7.10.jar:2.7.10]
         at 
org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121) 
[cxf-api-2.7.10.jar:2.7.10]
         at 
org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:239) 
[cxf-rt-transports-http-2.7.10.jar:2.7.10]
         at 
org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:248) 
[cxf-rt-transports-http-2.7.10.jar:2.7.10]
         at 
org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:222) 
[cxf-rt-transports-http-2.7.10.jar:2.7.10]
         at 
org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:153) 
[cxf-rt-transports-http-2.7.10.jar:2.7.10]
         at 
org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet.java:167) 
[cxf-rt-transports-http-2.7.10.jar:2.7.10]
         at 
org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:286) 
[cxf-rt-transports-http-2.7.10.jar:2.7.10]
         at 
org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPServlet.java:206) 
[cxf-rt-transports-http-2.7.10.jar:2.7.10]
         at javax.servlet.http.HttpServlet.service(HttpServlet.java:754) 
[jboss-servlet-api_3.0_spec-1.0.2.Final-redhat-1.jar:1.0.2.Final-redhat-1]
         at 
org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:262) 
[cxf-rt-transports-http-2.7.10.jar:2.7.10]
         at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:295) 
[jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
         at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214) 
[jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
         at 
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230) 
[jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
         at 
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:149) 
[jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
         at 
org.jboss.as.jpa.interceptor.WebNonTxEmCloserValve.invoke(WebNonTxEmCloserValve.java:50) 
[jboss-as-jpa-7.2.0.Final-redhat-8.jar:7.2.0.Final-redhat-8]
         at 
org.jboss.as.jpa.interceptor.WebNonTxEmCloserValve.invoke(WebNonTxEmCloserValve.java:50) 
[jboss-as-jpa-7.2.0.Final-redhat-8.jar:7.2.0.Final-redhat-8]
         at 
org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:169) 
[jboss-as-web-7.2.0.Final-redhat-8.jar:7.2.0.Final-redhat-8]
         at 
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:145) 
[jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
         at 
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:97) 
[jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
         at 
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:102) 
[jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
         at 
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:336) 
[jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
         at 
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856) 
[jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
         at 
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:653) 
[jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
         at 
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:920) 
[jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
         at java.lang.Thread.run(Thread.java:722) 
[rt.jar:1.7.0_09-icedtea]

I'd like to catch the SAXException or the unmarshallingException in 
order to indicate the invalid message part to the sender.
It's look like a library mismatching, but I can't figure out which one.



Re: cxf 2.7.10 throw AbractMethodError using javax.ws.rs-api-2.0-m10

Posted by ac...@toulouse.viveris.com.
Thanks Sergey, you help me to find out the solution.

I finally choose to force jboss not to load its JAXRS 1.1 API, to do 
so, you need to :
1/ remove the <extension module="org.jboss.as.jaxrs"/> from its 
configuration (ie standalone.xml)
2/ remove all the javaee.api module linkage in the 
jboss-deployment-structure.xml file in your web-application.
Here is my jboss-deployment-structure.xml file content :

<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.0">
     <deployment>
         <exclusions>
	   <!-- Exclude JAVA EE of JBOSS (javax.ws..) => Add dependency 
javax.annotation -->
	   <module name="javaee.api" />
	   <!--
	 	remove from jboss configuration standalone.xml the following 
extension:
		<extension module="org.jboss.as.jaxrs"/>
	   -->
     	</exclusions>
         <dependencies>
             <module name="org.codehaus.jackson.jackson-core-asl"/>
             <module name="org.codehaus.jackson.jackson-mapper-asl"/>
	    <!-- Add javax.annotation.Ressource -->
  	    <module name="javax.annotation.api" />
	    <module name="javax.xml.ws.api" />
         </dependencies>
     </deployment>
</jboss-deployment-structure>



Le 25.03.2014 12:13, Sergey Beryozkin a écrit :
> Hi
>
> The relevant stack trace is here:
>
> CXFServlet threw exception: java.lang.AbstractMethodError:
> 
> javax.ws.rs.core.Response.getStatusInfo()Ljavax/ws/rs/core/Response$StatusType;
>         at
> 
> javax.ws.rs.WebApplicationException.validate(WebApplicationException.java:186)
> [javax.ws.rs-api-2.0-m10.jar:2.0-m10]
>         at
> 
> javax.ws.rs.ClientErrorException.<init>(ClientErrorException.java:127)
> [javax.ws.rs-api-2.0-m10.jar:2.0-m10]
>         at
> javax.ws.rs.BadRequestException.<init>(BadRequestException.java:92)
> [javax.ws.rs-api-2.0-m10.jar:2.0-m10]
>         at
> 
> org.apache.cxf.jaxrs.provider.AbstractJAXBProvider.handleExceptionEnd(AbstractJAXBProvider.java:688)
> [cxf-rt-frontend-jaxrs-2.7.10.jar:2.7.10]
>         at
> 
> org.apache.cxf.jaxrs.provider.AbstractJAXBProvider.handleJAXBException(AbstractJAXBProvider.java:700)
> [cxf-rt-frontend-jaxrs-2.7.10.jar:2.7.10]
>
>
> As I said on #cxf, the problem is you have the container shipping
> JAXRS 1.1 API, CXF 2.7.10 - 2.0 (m10). WebApplicationException loaded
> from 1.1 API (by some root class loader) is linked with 2.0
> ClientErrorException which extends WebApplicationException, where
> ClientErrorException also calls a new private WebApplicationException
> method (added in 2.0).
>
> I recall you mentioned you needed 2.0 API in your own code.
> So the workaround, dropping 2.0 API dependency, when deploying into
> JBoss, given that CXF 2.7.10 is expected to completely support 1.1
> applications, will not work.
>
> So what I can recommend is to either temporarily avoid using 2.0 API
> in your code while you work with a given version of JBoss or find out
> how to prevent JBoss loading 1.1 API
>
> HTH, Sergey
>
>
>
> On 25/03/14 09:31, acollier@toulouse.viveris.com wrote:
>> Hi everybody!!
>>
>> Server is configured with cxf (2.7.6 or 2.7.10), Spring 3.2.3 and
>> jboss-as-7.2.
>> I encounter a problem using cxf and jaxb xsd validation. Here is the
>> service declaration :
>>
>>       <jaxrs:server id="services" address="/">
>>          <jaxrs:serviceBeans>
>>              <bean class="com.myCompany.ServiceInterface" />
>>          </jaxrs:serviceBeans>
>>           <jaxrs:providers>
>>               <ref bean="JSONProvider" />
>>               <ref bean="JAXBProvider" />
>>               <ref bean="ExceptionHandler" />
>>           </jaxrs:providers>
>>       </jaxrs:server>
>>
>>      <bean id="ExceptionHandler"
>> class="com.myCompany.util.ExceptionHandler" />
>>      <bean id="JSONProvider"
>> class="org.codehaus.jackson.jaxrs.JacksonJsonProvider" />
>>
>>      <bean id="JAXBProvider"
>> class="org.apache.cxf.jaxrs.provider.JAXBElementProvider">
>>           <property name="singleJaxbContext" value="true" />
>>          <property name="marshallerProperties" ref="propertiesMap"/>
>>           <property name="validateOutput" value="true" />
>>          <property ref="schemaHolder" name="schemaHandler"/>
>>       </bean>
>>
>>      <util:map id="propertiesMap">
>>           <entry key="jaxb.formatted.output"><value
>> type="java.lang.Boolean">true</value></entry>
>>      </util:map>
>>
>>      <bean id="schemaHolder"
>> class="org.apache.cxf.jaxrs.utils.schemas.SchemaHandler">
>>          <property name="schemas" ref="XMLISchemas"/> <!-- 
>> XMLIschemas
>> contains the path of every xds to use -->
>>      </bean>
>>
>> XSD validation functionnality work perferctly in both way and my
>> erroneous payload (bad tag or bad value) are generating exception
>> outside of my service code. This is great, but I'd like to produce a
>> specific response to user in case of xsd validation exception. So I
>> introduced the ExceptionHandler bean and I figured out that thrown
>> exception was not the one expected (SAXParseException or
>> UnmarshalException) but an AbstractMethodError.
>> Here is the (full) stacktrace :
>>
>> 17:55:30,314 INFO  [stdout] 24-03-14 16:55:30[WARN
>> ][o.a.c.j.p.AbstractJAXBProvider][javax.xml.bind.UnmarshalException
>> 17:55:30,320 INFO  [stdout]  - with linked exception:
>> 17:55:30,321 INFO  [stdout] [org.xml.sax.SAXParseException; 
>> lineNumber:
>> 4; columnNumber: 4; cvc-complex-type.2.4.a: Invalid content was 
>> found
>> starting with element 'direct'. One of '{direction}' is expected.]
>> 17:55:30,321 INFO  [stdout]        at
>> 
>> com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.handleStreamException(UnmarshallerImpl.java:483)
>>
>> 17:55:30,321 INFO  [stdout]        at
>> 
>> com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:417)
>>
>> 17:55:30,321 INFO  [stdout]        at
>> 
>> com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:386)
>>
>> 17:55:30,322 INFO  [stdout]        at
>> 
>> org.apache.cxf.jaxrs.provider.JAXBElementProvider.unmarshalFromInputStream(JAXBElementProvider.java:272)
>>
>> 17:55:30,322 INFO  [stdout]        at
>> 
>> org.apache.cxf.jaxrs.provider.JAXBElementProvider.doUnmarshal(JAXBElementProvider.java:225)
>>
>> 17:55:30,322 INFO  [stdout]        at
>> 
>> org.apache.cxf.jaxrs.provider.JAXBElementProvider.readFrom(JAXBElementProvider.java:184)
>>
>> 17:55:30,322 INFO  [stdout]        at
>> 
>> org.apache.cxf.jaxrs.utils.JAXRSUtils.readFromMessageBodyReader(JAXRSUtils.java:1280)
>>
>> 17:55:30,322 INFO  [stdout]        at
>> 
>> org.apache.cxf.jaxrs.utils.JAXRSUtils.readFromMessageBody(JAXRSUtils.java:1231)
>>
>> 17:55:30,323 INFO  [stdout]        at
>> 
>> org.apache.cxf.jaxrs.utils.JAXRSUtils.processParameter(JAXRSUtils.java:782)
>> 17:55:30,323 INFO  [stdout]        at
>> 
>> org.apache.cxf.jaxrs.utils.JAXRSUtils.processParameters(JAXRSUtils.java:741)
>>
>> 17:55:30,323 INFO  [stdout]        at
>> 
>> org.apache.cxf.jaxrs.interceptor.JAXRSInInterceptor.processRequest(JAXRSInInterceptor.java:254)
>>
>> 17:55:30,323 INFO  [stdout]        at
>> 
>> org.apache.cxf.jaxrs.interceptor.JAXRSInInterceptor.handleMessage(JAXRSInInterceptor.java:90)
>>
>> 17:55:30,324 INFO  [stdout]        at
>> 
>> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:272)
>>
>> 17:55:30,324 INFO  [stdout]        at
>> 
>> org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121)
>>
>> 17:55:30,324 INFO  [stdout]        at
>> 
>> org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:239)
>>
>> 17:55:30,324 INFO  [stdout]        at
>> 
>> org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:248)
>>
>> 17:55:30,324 INFO  [stdout]        at
>> 
>> org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:222)
>>
>> 17:55:30,325 INFO  [stdout]        at
>> 
>> org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:153)
>>
>> 17:55:30,325 INFO  [stdout]        at
>> 
>> org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet.java:167)
>>
>> 17:55:30,325 INFO  [stdout]        at
>> 
>> org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:286)
>>
>> 17:55:30,325 INFO  [stdout]        at
>> 
>> org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPServlet.java:206)
>>
>> 17:55:30,326 INFO  [stdout]        at
>> javax.servlet.http.HttpServlet.service(HttpServlet.java:754)
>> 17:55:30,326 INFO  [stdout]        at
>> 
>> org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:262)
>>
>> 17:55:30,326 INFO  [stdout]        at
>> 
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:295)
>>
>> 17:55:30,326 INFO  [stdout]        at
>> 
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214)
>>
>> 17:55:30,326 INFO  [stdout]        at
>> 
>> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
>>
>> 17:55:30,327 INFO  [stdout]        at
>> 
>> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:149)
>>
>> 17:55:30,327 INFO  [stdout]        at
>> 
>> org.jboss.as.jpa.interceptor.WebNonTxEmCloserValve.invoke(WebNonTxEmCloserValve.java:50)
>>
>> 17:55:30,327 INFO  [stdout]        at
>> 
>> org.jboss.as.jpa.interceptor.WebNonTxEmCloserValve.invoke(WebNonTxEmCloserValve.java:50)
>>
>> 17:55:30,327 INFO  [stdout]        at
>> 
>> org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:169)
>>
>> 17:55:30,328 INFO  [stdout]        at
>> 
>> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:145)
>>
>> 17:55:30,328 INFO  [stdout]        at
>> 
>> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:97)
>>
>> 17:55:30,328 INFO  [stdout]        at
>> 
>> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:102)
>>
>> 17:55:30,328 INFO  [stdout]        at
>> 
>> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:336)
>> 17:55:30,328 INFO  [stdout]        at
>> 
>> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856)
>> 17:55:30,329 INFO  [stdout]        at
>> 
>> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:653)
>>
>> 17:55:30,329 INFO  [stdout]        at
>> 
>> org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:920)
>> 17:55:30,329 INFO  [stdout]        at 
>> java.lang.Thread.run(Thread.java:722)
>> 17:55:30,329 INFO  [stdout] Caused by: 
>> org.xml.sax.SAXParseException;
>> lineNumber: 4; columnNumber: 4; cvc-complex-type.2.4.a: Invalid 
>> content
>> was found starting with element 'direct'. One of '{direction}' is 
>> expected.
>> 17:55:30,330 INFO  [stdout]        at
>> 
>> org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(Unknown
>> Source)
>> 17:55:30,330 INFO  [stdout]        at
>> org.apache.xerces.util.ErrorHandlerWrapper.error(Unknown Source)
>> 17:55:30,330 INFO  [stdout]        at
>> org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
>> 17:55:30,330 INFO  [stdout]        at
>> org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
>> 17:55:30,330 INFO  [stdout]        at
>> org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
>> 17:55:30,331 INFO  [stdout]        at
>> 
>> org.apache.xerces.impl.xs.XMLSchemaValidator$XSIErrorReporter.reportError(Unknown
>> Source)
>> 17:55:30,331 INFO  [stdout]        at
>> 
>> org.apache.xerces.impl.xs.XMLSchemaValidator.reportSchemaError(Unknown
>> Source)
>> 17:55:30,331 INFO  [stdout]        at
>> 
>> org.apache.xerces.impl.xs.XMLSchemaValidator.handleStartElement(Unknown
>> Source)
>> 17:55:30,331 INFO  [stdout]        at
>> org.apache.xerces.impl.xs.XMLSchemaValidator.startElement(Unknown 
>> Source)
>> 17:55:30,331 INFO  [stdout]        at
>> 
>> org.apache.xerces.jaxp.validation.ValidatorHandlerImpl.startElement(Unknown
>> Source)
>> 17:55:30,332 INFO  [stdout]        at
>> 
>> com.sun.xml.bind.v2.runtime.unmarshaller.ValidatingUnmarshaller.startElement(ValidatingUnmarshaller.java:101)
>>
>> 17:55:30,332 INFO  [stdout]        at
>> 
>> com.sun.xml.bind.v2.runtime.unmarshaller.StAXStreamConnector.handleStartElement(StAXStreamConnector.java:246)
>>
>> 17:55:30,332 INFO  [stdout]        at
>> 
>> com.sun.xml.bind.v2.runtime.unmarshaller.StAXStreamConnector.bridge(StAXStreamConnector.java:180)
>>
>> 17:55:30,332 INFO  [stdout]        at
>> 
>> com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:415)
>>
>> 17:55:30,333 INFO  [stdout]        ... 36 more
>> 17:55:30,334 ERROR
>> 
>> [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/server].[CXFServlet]]
>> JBWEB000236: Servlet.service() for servlet CXFServlet threw 
>> exception:
>> java.lang.AbstractMethodError:
>> 
>> javax.ws.rs.core.Response.getStatusInfo()Ljavax/ws/rs/core/Response$StatusType;
>>
>>          at
>> 
>> javax.ws.rs.WebApplicationException.validate(WebApplicationException.java:186)
>> [javax.ws.rs-api-2.0-m10.jar:2.0-m10]
>>          at
>> 
>> javax.ws.rs.ClientErrorException.<init>(ClientErrorException.java:127)
>> [javax.ws.rs-api-2.0-m10.jar:2.0-m10]
>>          at
>> javax.ws.rs.BadRequestException.<init>(BadRequestException.java:92)
>> [javax.ws.rs-api-2.0-m10.jar:2.0-m10]
>>          at
>> 
>> org.apache.cxf.jaxrs.provider.AbstractJAXBProvider.handleExceptionEnd(AbstractJAXBProvider.java:688)
>> [cxf-rt-frontend-jaxrs-2.7.10.jar:2.7.10]
>>          at
>> 
>> org.apache.cxf.jaxrs.provider.AbstractJAXBProvider.handleJAXBException(AbstractJAXBProvider.java:700)
>> [cxf-rt-frontend-jaxrs-2.7.10.jar:2.7.10]
>>          at
>> 
>> org.apache.cxf.jaxrs.provider.JAXBElementProvider.readFrom(JAXBElementProvider.java:198)
>> [cxf-rt-frontend-jaxrs-2.7.10.jar:2.7.10]
>>          at
>> 
>> org.apache.cxf.jaxrs.utils.JAXRSUtils.readFromMessageBodyReader(JAXRSUtils.java:1280)
>> [cxf-rt-frontend-jaxrs-2.7.10.jar:2.7.10]
>>          at
>> 
>> org.apache.cxf.jaxrs.utils.JAXRSUtils.readFromMessageBody(JAXRSUtils.java:1231)
>> [cxf-rt-frontend-jaxrs-2.7.10.jar:2.7.10]
>>          at
>> 
>> org.apache.cxf.jaxrs.utils.JAXRSUtils.processParameter(JAXRSUtils.java:782)
>> [cxf-rt-frontend-jaxrs-2.7.10.jar:2.7.10]
>>          at
>> 
>> org.apache.cxf.jaxrs.utils.JAXRSUtils.processParameters(JAXRSUtils.java:741)
>> [cxf-rt-frontend-jaxrs-2.7.10.jar:2.7.10]
>>          at
>> 
>> org.apache.cxf.jaxrs.interceptor.JAXRSInInterceptor.processRequest(JAXRSInInterceptor.java:254)
>> [cxf-rt-frontend-jaxrs-2.7.10.jar:2.7.10]
>>          at
>> 
>> org.apache.cxf.jaxrs.interceptor.JAXRSInInterceptor.handleMessage(JAXRSInInterceptor.java:90)
>> [cxf-rt-frontend-jaxrs-2.7.10.jar:2.7.10]
>>          at
>> 
>> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:272)
>> [cxf-api-2.7.10.jar:2.7.10]
>>          at
>> 
>> org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121)
>> [cxf-api-2.7.10.jar:2.7.10]
>>          at
>> 
>> org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:239)
>> [cxf-rt-transports-http-2.7.10.jar:2.7.10]
>>          at
>> 
>> org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:248)
>> [cxf-rt-transports-http-2.7.10.jar:2.7.10]
>>          at
>> 
>> org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:222)
>> [cxf-rt-transports-http-2.7.10.jar:2.7.10]
>>          at
>> 
>> org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:153)
>> [cxf-rt-transports-http-2.7.10.jar:2.7.10]
>>          at
>> 
>> org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet.java:167)
>> [cxf-rt-transports-http-2.7.10.jar:2.7.10]
>>          at
>> 
>> org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:286)
>> [cxf-rt-transports-http-2.7.10.jar:2.7.10]
>>          at
>> 
>> org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPServlet.java:206)
>> [cxf-rt-transports-http-2.7.10.jar:2.7.10]
>>          at 
>> javax.servlet.http.HttpServlet.service(HttpServlet.java:754)
>> 
>> [jboss-servlet-api_3.0_spec-1.0.2.Final-redhat-1.jar:1.0.2.Final-redhat-1]
>>          at
>> 
>> org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:262)
>> [cxf-rt-transports-http-2.7.10.jar:2.7.10]
>>          at
>> 
>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:295)
>> [jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
>>          at
>> 
>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214)
>> [jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
>>          at
>> 
>> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
>> [jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
>>          at
>> 
>> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:149)
>> [jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
>>          at
>> 
>> org.jboss.as.jpa.interceptor.WebNonTxEmCloserValve.invoke(WebNonTxEmCloserValve.java:50)
>> [jboss-as-jpa-7.2.0.Final-redhat-8.jar:7.2.0.Final-redhat-8]
>>          at
>> 
>> org.jboss.as.jpa.interceptor.WebNonTxEmCloserValve.invoke(WebNonTxEmCloserValve.java:50)
>> [jboss-as-jpa-7.2.0.Final-redhat-8.jar:7.2.0.Final-redhat-8]
>>          at
>> 
>> org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:169)
>> [jboss-as-web-7.2.0.Final-redhat-8.jar:7.2.0.Final-redhat-8]
>>          at
>> 
>> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:145)
>> [jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
>>          at
>> 
>> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:97)
>> [jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
>>          at
>> 
>> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:102)
>> [jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
>>          at
>> 
>> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:336)
>> [jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
>>          at
>> 
>> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856)
>> [jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
>>          at
>> 
>> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:653)
>> [jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
>>          at
>> 
>> org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:920)
>> [jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
>>          at java.lang.Thread.run(Thread.java:722) 
>> [rt.jar:1.7.0_09-icedtea]
>>
>> I'd like to catch the SAXException or the unmarshallingException in
>> order to indicate the invalid message part to the sender.
>> It's look like a library mismatching, but I can't figure out which 
>> one.
>>
>>


Re: cxf 2.7.10 throw AbractMethodError using javax.ws.rs-api-2.0-m10

Posted by Sergey Beryozkin <sb...@gmail.com>.
Hi

The relevant stack trace is here:

CXFServlet threw exception: java.lang.AbstractMethodError: 
javax.ws.rs.core.Response.getStatusInfo()Ljavax/ws/rs/core/Response$StatusType;
         at 
javax.ws.rs.WebApplicationException.validate(WebApplicationException.java:186) 
[javax.ws.rs-api-2.0-m10.jar:2.0-m10]
         at 
javax.ws.rs.ClientErrorException.<init>(ClientErrorException.java:127) 
[javax.ws.rs-api-2.0-m10.jar:2.0-m10]
         at 
javax.ws.rs.BadRequestException.<init>(BadRequestException.java:92) 
[javax.ws.rs-api-2.0-m10.jar:2.0-m10]
         at 
org.apache.cxf.jaxrs.provider.AbstractJAXBProvider.handleExceptionEnd(AbstractJAXBProvider.java:688) 
[cxf-rt-frontend-jaxrs-2.7.10.jar:2.7.10]
         at 
org.apache.cxf.jaxrs.provider.AbstractJAXBProvider.handleJAXBException(AbstractJAXBProvider.java:700) 
[cxf-rt-frontend-jaxrs-2.7.10.jar:2.7.10]


As I said on #cxf, the problem is you have the container shipping JAXRS 
1.1 API, CXF 2.7.10 - 2.0 (m10). WebApplicationException loaded from 1.1 
API (by some root class loader) is linked with 2.0 ClientErrorException 
which extends WebApplicationException, where ClientErrorException also 
calls a new private WebApplicationException method (added in 2.0).

I recall you mentioned you needed 2.0 API in your own code.
So the workaround, dropping 2.0 API dependency, when deploying into 
JBoss, given that CXF 2.7.10 is expected to completely support 1.1 
applications, will not work.

So what I can recommend is to either temporarily avoid using 2.0 API in 
your code while you work with a given version of JBoss or find out how 
to prevent JBoss loading 1.1 API

HTH, Sergey



On 25/03/14 09:31, acollier@toulouse.viveris.com wrote:
> Hi everybody!!
>
> Server is configured with cxf (2.7.6 or 2.7.10), Spring 3.2.3 and
> jboss-as-7.2.
> I encounter a problem using cxf and jaxb xsd validation. Here is the
> service declaration :
>
>       <jaxrs:server id="services" address="/">
>          <jaxrs:serviceBeans>
>              <bean class="com.myCompany.ServiceInterface" />
>          </jaxrs:serviceBeans>
>           <jaxrs:providers>
>               <ref bean="JSONProvider" />
>               <ref bean="JAXBProvider" />
>               <ref bean="ExceptionHandler" />
>           </jaxrs:providers>
>       </jaxrs:server>
>
>      <bean id="ExceptionHandler"
> class="com.myCompany.util.ExceptionHandler" />
>      <bean id="JSONProvider"
> class="org.codehaus.jackson.jaxrs.JacksonJsonProvider" />
>
>      <bean id="JAXBProvider"
> class="org.apache.cxf.jaxrs.provider.JAXBElementProvider">
>           <property name="singleJaxbContext" value="true" />
>          <property name="marshallerProperties" ref="propertiesMap"/>
>           <property name="validateOutput" value="true" />
>          <property ref="schemaHolder" name="schemaHandler"/>
>       </bean>
>
>      <util:map id="propertiesMap">
>           <entry key="jaxb.formatted.output"><value
> type="java.lang.Boolean">true</value></entry>
>      </util:map>
>
>      <bean id="schemaHolder"
> class="org.apache.cxf.jaxrs.utils.schemas.SchemaHandler">
>          <property name="schemas" ref="XMLISchemas"/> <!-- XMLIschemas
> contains the path of every xds to use -->
>      </bean>
>
> XSD validation functionnality work perferctly in both way and my
> erroneous payload (bad tag or bad value) are generating exception
> outside of my service code. This is great, but I'd like to produce a
> specific response to user in case of xsd validation exception. So I
> introduced the ExceptionHandler bean and I figured out that thrown
> exception was not the one expected (SAXParseException or
> UnmarshalException) but an AbstractMethodError.
> Here is the (full) stacktrace :
>
> 17:55:30,314 INFO  [stdout] 24-03-14 16:55:30[WARN
> ][o.a.c.j.p.AbstractJAXBProvider][javax.xml.bind.UnmarshalException
> 17:55:30,320 INFO  [stdout]  - with linked exception:
> 17:55:30,321 INFO  [stdout] [org.xml.sax.SAXParseException; lineNumber:
> 4; columnNumber: 4; cvc-complex-type.2.4.a: Invalid content was found
> starting with element 'direct'. One of '{direction}' is expected.]
> 17:55:30,321 INFO  [stdout]        at
> com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.handleStreamException(UnmarshallerImpl.java:483)
>
> 17:55:30,321 INFO  [stdout]        at
> com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:417)
>
> 17:55:30,321 INFO  [stdout]        at
> com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:386)
>
> 17:55:30,322 INFO  [stdout]        at
> org.apache.cxf.jaxrs.provider.JAXBElementProvider.unmarshalFromInputStream(JAXBElementProvider.java:272)
>
> 17:55:30,322 INFO  [stdout]        at
> org.apache.cxf.jaxrs.provider.JAXBElementProvider.doUnmarshal(JAXBElementProvider.java:225)
>
> 17:55:30,322 INFO  [stdout]        at
> org.apache.cxf.jaxrs.provider.JAXBElementProvider.readFrom(JAXBElementProvider.java:184)
>
> 17:55:30,322 INFO  [stdout]        at
> org.apache.cxf.jaxrs.utils.JAXRSUtils.readFromMessageBodyReader(JAXRSUtils.java:1280)
>
> 17:55:30,322 INFO  [stdout]        at
> org.apache.cxf.jaxrs.utils.JAXRSUtils.readFromMessageBody(JAXRSUtils.java:1231)
>
> 17:55:30,323 INFO  [stdout]        at
> org.apache.cxf.jaxrs.utils.JAXRSUtils.processParameter(JAXRSUtils.java:782)
> 17:55:30,323 INFO  [stdout]        at
> org.apache.cxf.jaxrs.utils.JAXRSUtils.processParameters(JAXRSUtils.java:741)
>
> 17:55:30,323 INFO  [stdout]        at
> org.apache.cxf.jaxrs.interceptor.JAXRSInInterceptor.processRequest(JAXRSInInterceptor.java:254)
>
> 17:55:30,323 INFO  [stdout]        at
> org.apache.cxf.jaxrs.interceptor.JAXRSInInterceptor.handleMessage(JAXRSInInterceptor.java:90)
>
> 17:55:30,324 INFO  [stdout]        at
> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:272)
>
> 17:55:30,324 INFO  [stdout]        at
> org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121)
>
> 17:55:30,324 INFO  [stdout]        at
> org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:239)
>
> 17:55:30,324 INFO  [stdout]        at
> org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:248)
>
> 17:55:30,324 INFO  [stdout]        at
> org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:222)
>
> 17:55:30,325 INFO  [stdout]        at
> org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:153)
>
> 17:55:30,325 INFO  [stdout]        at
> org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet.java:167)
>
> 17:55:30,325 INFO  [stdout]        at
> org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:286)
>
> 17:55:30,325 INFO  [stdout]        at
> org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPServlet.java:206)
>
> 17:55:30,326 INFO  [stdout]        at
> javax.servlet.http.HttpServlet.service(HttpServlet.java:754)
> 17:55:30,326 INFO  [stdout]        at
> org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:262)
>
> 17:55:30,326 INFO  [stdout]        at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:295)
>
> 17:55:30,326 INFO  [stdout]        at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214)
>
> 17:55:30,326 INFO  [stdout]        at
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
>
> 17:55:30,327 INFO  [stdout]        at
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:149)
>
> 17:55:30,327 INFO  [stdout]        at
> org.jboss.as.jpa.interceptor.WebNonTxEmCloserValve.invoke(WebNonTxEmCloserValve.java:50)
>
> 17:55:30,327 INFO  [stdout]        at
> org.jboss.as.jpa.interceptor.WebNonTxEmCloserValve.invoke(WebNonTxEmCloserValve.java:50)
>
> 17:55:30,327 INFO  [stdout]        at
> org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:169)
>
> 17:55:30,328 INFO  [stdout]        at
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:145)
>
> 17:55:30,328 INFO  [stdout]        at
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:97)
>
> 17:55:30,328 INFO  [stdout]        at
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:102)
>
> 17:55:30,328 INFO  [stdout]        at
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:336)
> 17:55:30,328 INFO  [stdout]        at
> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856)
> 17:55:30,329 INFO  [stdout]        at
> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:653)
>
> 17:55:30,329 INFO  [stdout]        at
> org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:920)
> 17:55:30,329 INFO  [stdout]        at java.lang.Thread.run(Thread.java:722)
> 17:55:30,329 INFO  [stdout] Caused by: org.xml.sax.SAXParseException;
> lineNumber: 4; columnNumber: 4; cvc-complex-type.2.4.a: Invalid content
> was found starting with element 'direct'. One of '{direction}' is expected.
> 17:55:30,330 INFO  [stdout]        at
> org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(Unknown
> Source)
> 17:55:30,330 INFO  [stdout]        at
> org.apache.xerces.util.ErrorHandlerWrapper.error(Unknown Source)
> 17:55:30,330 INFO  [stdout]        at
> org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
> 17:55:30,330 INFO  [stdout]        at
> org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
> 17:55:30,330 INFO  [stdout]        at
> org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
> 17:55:30,331 INFO  [stdout]        at
> org.apache.xerces.impl.xs.XMLSchemaValidator$XSIErrorReporter.reportError(Unknown
> Source)
> 17:55:30,331 INFO  [stdout]        at
> org.apache.xerces.impl.xs.XMLSchemaValidator.reportSchemaError(Unknown
> Source)
> 17:55:30,331 INFO  [stdout]        at
> org.apache.xerces.impl.xs.XMLSchemaValidator.handleStartElement(Unknown
> Source)
> 17:55:30,331 INFO  [stdout]        at
> org.apache.xerces.impl.xs.XMLSchemaValidator.startElement(Unknown Source)
> 17:55:30,331 INFO  [stdout]        at
> org.apache.xerces.jaxp.validation.ValidatorHandlerImpl.startElement(Unknown
> Source)
> 17:55:30,332 INFO  [stdout]        at
> com.sun.xml.bind.v2.runtime.unmarshaller.ValidatingUnmarshaller.startElement(ValidatingUnmarshaller.java:101)
>
> 17:55:30,332 INFO  [stdout]        at
> com.sun.xml.bind.v2.runtime.unmarshaller.StAXStreamConnector.handleStartElement(StAXStreamConnector.java:246)
>
> 17:55:30,332 INFO  [stdout]        at
> com.sun.xml.bind.v2.runtime.unmarshaller.StAXStreamConnector.bridge(StAXStreamConnector.java:180)
>
> 17:55:30,332 INFO  [stdout]        at
> com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:415)
>
> 17:55:30,333 INFO  [stdout]        ... 36 more
> 17:55:30,334 ERROR
> [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/server].[CXFServlet]]
> JBWEB000236: Servlet.service() for servlet CXFServlet threw exception:
> java.lang.AbstractMethodError:
> javax.ws.rs.core.Response.getStatusInfo()Ljavax/ws/rs/core/Response$StatusType;
>
>          at
> javax.ws.rs.WebApplicationException.validate(WebApplicationException.java:186)
> [javax.ws.rs-api-2.0-m10.jar:2.0-m10]
>          at
> javax.ws.rs.ClientErrorException.<init>(ClientErrorException.java:127)
> [javax.ws.rs-api-2.0-m10.jar:2.0-m10]
>          at
> javax.ws.rs.BadRequestException.<init>(BadRequestException.java:92)
> [javax.ws.rs-api-2.0-m10.jar:2.0-m10]
>          at
> org.apache.cxf.jaxrs.provider.AbstractJAXBProvider.handleExceptionEnd(AbstractJAXBProvider.java:688)
> [cxf-rt-frontend-jaxrs-2.7.10.jar:2.7.10]
>          at
> org.apache.cxf.jaxrs.provider.AbstractJAXBProvider.handleJAXBException(AbstractJAXBProvider.java:700)
> [cxf-rt-frontend-jaxrs-2.7.10.jar:2.7.10]
>          at
> org.apache.cxf.jaxrs.provider.JAXBElementProvider.readFrom(JAXBElementProvider.java:198)
> [cxf-rt-frontend-jaxrs-2.7.10.jar:2.7.10]
>          at
> org.apache.cxf.jaxrs.utils.JAXRSUtils.readFromMessageBodyReader(JAXRSUtils.java:1280)
> [cxf-rt-frontend-jaxrs-2.7.10.jar:2.7.10]
>          at
> org.apache.cxf.jaxrs.utils.JAXRSUtils.readFromMessageBody(JAXRSUtils.java:1231)
> [cxf-rt-frontend-jaxrs-2.7.10.jar:2.7.10]
>          at
> org.apache.cxf.jaxrs.utils.JAXRSUtils.processParameter(JAXRSUtils.java:782)
> [cxf-rt-frontend-jaxrs-2.7.10.jar:2.7.10]
>          at
> org.apache.cxf.jaxrs.utils.JAXRSUtils.processParameters(JAXRSUtils.java:741)
> [cxf-rt-frontend-jaxrs-2.7.10.jar:2.7.10]
>          at
> org.apache.cxf.jaxrs.interceptor.JAXRSInInterceptor.processRequest(JAXRSInInterceptor.java:254)
> [cxf-rt-frontend-jaxrs-2.7.10.jar:2.7.10]
>          at
> org.apache.cxf.jaxrs.interceptor.JAXRSInInterceptor.handleMessage(JAXRSInInterceptor.java:90)
> [cxf-rt-frontend-jaxrs-2.7.10.jar:2.7.10]
>          at
> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:272)
> [cxf-api-2.7.10.jar:2.7.10]
>          at
> org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121)
> [cxf-api-2.7.10.jar:2.7.10]
>          at
> org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:239)
> [cxf-rt-transports-http-2.7.10.jar:2.7.10]
>          at
> org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:248)
> [cxf-rt-transports-http-2.7.10.jar:2.7.10]
>          at
> org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:222)
> [cxf-rt-transports-http-2.7.10.jar:2.7.10]
>          at
> org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:153)
> [cxf-rt-transports-http-2.7.10.jar:2.7.10]
>          at
> org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet.java:167)
> [cxf-rt-transports-http-2.7.10.jar:2.7.10]
>          at
> org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:286)
> [cxf-rt-transports-http-2.7.10.jar:2.7.10]
>          at
> org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPServlet.java:206)
> [cxf-rt-transports-http-2.7.10.jar:2.7.10]
>          at javax.servlet.http.HttpServlet.service(HttpServlet.java:754)
> [jboss-servlet-api_3.0_spec-1.0.2.Final-redhat-1.jar:1.0.2.Final-redhat-1]
>          at
> org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:262)
> [cxf-rt-transports-http-2.7.10.jar:2.7.10]
>          at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:295)
> [jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
>          at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214)
> [jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
>          at
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
> [jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
>          at
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:149)
> [jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
>          at
> org.jboss.as.jpa.interceptor.WebNonTxEmCloserValve.invoke(WebNonTxEmCloserValve.java:50)
> [jboss-as-jpa-7.2.0.Final-redhat-8.jar:7.2.0.Final-redhat-8]
>          at
> org.jboss.as.jpa.interceptor.WebNonTxEmCloserValve.invoke(WebNonTxEmCloserValve.java:50)
> [jboss-as-jpa-7.2.0.Final-redhat-8.jar:7.2.0.Final-redhat-8]
>          at
> org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:169)
> [jboss-as-web-7.2.0.Final-redhat-8.jar:7.2.0.Final-redhat-8]
>          at
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:145)
> [jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
>          at
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:97)
> [jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
>          at
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:102)
> [jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
>          at
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:336)
> [jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
>          at
> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856)
> [jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
>          at
> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:653)
> [jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
>          at
> org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:920)
> [jbossweb-7.2.0.Final-redhat-1.jar:7.2.0.Final-redhat-1]
>          at java.lang.Thread.run(Thread.java:722) [rt.jar:1.7.0_09-icedtea]
>
> I'd like to catch the SAXException or the unmarshallingException in
> order to indicate the invalid message part to the sender.
> It's look like a library mismatching, but I can't figure out which one.
>
>


-- 
Sergey Beryozkin

Talend Community Coders
http://coders.talend.com/

Blog: http://sberyozkin.blogspot.com