Ok, I confirmed that it is the problem with Glassfish 3.1. I deployed the same application on Tomcat, and it worked fine even with "text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2" header.
Thanks On Thu, Jul 26, 2012 at 7:07 PM, Sergey Beryozkin <sberyoz...@gmail.com>wrote: > Hi > > On 26/07/12 18:10, java kurious wrote: > >> Hi Sergey, >> >> I continue to see the problem with status 406. Is there a way to >> intercept this request before JAXRSInInterceptor, and change the ACCEPT >> header ? >> >> I've missed your earlier email. I think the fact MediaTypeHeaderProvider > is not called indicates you see Jersey libraries loaded (given it's > Glassfish). > Can you check in Debugger, use Display view, the stacktrace ? > > Please also check this email on the changes to do with checking malformed > types: > http://cxf.547215.n5.nabble.**com/Media-type-separator-is-** > missing-how-to-troubleshoot-**tt5711524.html<http://cxf.547215.n5.nabble.com/Media-type-separator-is-missing-how-to-troubleshoot-tt5711524.html> > > However, please verify first if Jersey is loaded and if yes then we'll > find the way to bypass > > Sergey > > Thanks for your help. >> >> >> On Thu, Jul 19, 2012 at 6:35 PM, java kurious <javakuri...@gmail.com >> <mailto:javakuri...@gmail.com>**> wrote: >> >> Ok, I have the source code downloaded, and I have the glassfish >> running from NetBeans. As you mentioned, I have left both cxf-bundle >> and cxf-rt-frontend-jaxrs as dependencies. When both libraries are >> present, /JAXRSInInterceptor.java/ from cxf-rt-frontend-jaxrs gets >> >> called. I also put breakpoints in MediaTypeHeaderProvider.java, but >> it does not seem to get called. Here are the steps I followed to >> start debugging. >> >> 1. >> >> >> Started the Glassfish in Debug mode. >> >> 2. >> >> Issued a request to the REST service. >> >> 3. >> >> The code stops at /JAXRSInInterceptor.java's >> //*processRequest*//(Message msg) /method at following line:// >> >> /try {/ >> >> /acceptContentTypes = JAXRSUtils.sortMediaTypes(**acceptTypes);/ >> >> /} catch (IllegalArgumentException ex) {/ >> >> /throw new WebApplicationException(406);/ >> >> /}/ >> >> >> >> The Accept header was [text/html, image/gif, image/jpeg, *; q=.2, >> */*; q=.2]. >> >> >> Let me know what specifically you want me to test. >> >> Thanks >> Vineet. >> >> >> On Thu, Jul 19, 2012 at 2:08 PM, Sergey Beryozkin >> <sberyoz...@gmail.com <mailto:sberyoz...@gmail.com>> wrote: >> >> I can see the test (based on the embedded jetty) working just >> fine: >> >> ID: 1 >> Address: >> http://localhost:9002/__**bookstore/books/123<http://localhost:9002/__bookstore/books/123> >> >> >> <http://localhost:9002/**bookstore/books/123<http://localhost:9002/bookstore/books/123> >> > >> Http-Method: GET >> Content-Type: */* >> Headers: {Accept=[text/html, image/gif, image/jpeg, *; q=.2, >> */*; q=.2], Cache-Control=[no-cache], connection=[keep-alive], >> content-type=[*/*], Host=[localhost:9002], Pragma=[no-cache], >> User-Agent=[Apache CXF ${project.version}]} >> >> and the response is getting is back... >> I wonder if Tomcat/Glassfish actually transforms the Accept >> values somehow afterwards, something subtle is causing the issue. >> >> Can you please help a bit with debugging it ? >> For a start you can probably drop either bundle or jaxrs >> frontend dependency, actually, do it after we sort out this >> issue :-) >> >> Can you download CXF 2.6.1 source: >> >> http://search.maven.org/__**remotecontent?filepath=org/__** >> apache/cxf/cxf-bundle/2.6.1/__**cxf-bundle-2.6.1-sources.jar<http://search.maven.org/__remotecontent?filepath=org/__apache/cxf/cxf-bundle/2.6.1/__cxf-bundle-2.6.1-sources.jar> >> >> <http://search.maven.org/**remotecontent?filepath=org/** >> apache/cxf/cxf-bundle/2.6.1/**cxf-bundle-2.6.1-sources.jar<http://search.maven.org/remotecontent?filepath=org/apache/cxf/cxf-bundle/2.6.1/cxf-bundle-2.6.1-sources.jar> >> > >> >> and set a breakpoint in >> org.apache.cxf.jaxrs.impl.__**MediaTypeHeaderProvider, after the >> >> endpoint starts and then invoke on it ? >> I wonder what woukd actually happen... >> >> Thanks, Sergey >> >> >> >> >> On 19/07/12 18:38, Sergey Beryozkin wrote: >> >> Hi, >> >> Yes, I see now... >> I have a few tests which seem to confirm it's been fixed, >> but I guess >> the code dealing with this case is a bit brittle. >> >> I'll experiment a bit more and will get back to you >> >> Thanks, Sergey >> >> On 19/07/12 18:22, java kurious wrote: >> >> Hi Sergey, >> >> I am implementing a REST web service using Camel and >> CXF. Following is >> the signature of the method. >> >> @GET >> @Path("/getCustomer") >> @Produces({"text/xml","text/__**html","application/xml"}) >> >> public Customer getCustomer( >> @PathParam("name") String name) { >> } >> >> Now, I could test the interface with Firefotx with >> success. But when a >> >> different WebClient connected to the same interface, It >> got a Status 406 >> error. After looking at the log files, I noticed >> following in the >> server.log of glassfish. >> >> Accept=[text/html, image/gif, image/jpeg,*; q=.2, */*; >> q=.2], >> >> The single '*' is causing the problem. It is not an >> acceptable type to >> be specified as per the CXF user forum, >> http://cxf.547215.n5.nabble.__** >> com/Jersey-CXF-compatibility-_**_td5437938.html >> >> <http://cxf.547215.n5.nabble.** >> com/Jersey-CXF-compatibility-**td5437938.html<http://cxf.547215.n5.nabble.com/Jersey-CXF-compatibility-td5437938.html> >> > >> . To recreate this problem with Firefox browser, I >> changed the header >> that Firefox was sending to match the above header, and >> Firefox also >> failed with the same error. Once I changed* to */* in >> Firefox, >> everything started working again. Unfortunately, I can't >> do that with >> the WebClient connecting to my interface, as the code is >> not available. >> >> In the same forum, >> http://cxf.547215.n5.nabble.__** >> com/Jersey-CXF-compatibility-_**_td5437938.html >> <http://cxf.547215.n5.nabble.** >> com/Jersey-CXF-compatibility-**td5437938.html<http://cxf.547215.n5.nabble.com/Jersey-CXF-compatibility-td5437938.html> >> >, >> >> you had mentioned that this '*' issue should be fixed. >> So, my question >> was if this was indeed fixed. >> >> >> _Following is the trace I have from Glassfish Server log. >> _ >> >> INFO: DEBUG [http-thread-pool-8080(1)] >> (ServletController.java:209) - >> Service http request on thread: >> Thread[http-thread-pool-8080(_**_1),5,grizzly-kernel] >> >> INFO: DEBUG [http-thread-pool-8080(1)] >> (AbstractHTTPDestination.java:**__192) - Create a new >> >> message for processing >> >> INFO: DEBUG [http-thread-pool-8080(1)] >> (Headers.java:347) - Request >> Headers: {Accept=[text/html, image/gif, image/jpeg, *; >> q=.2, */*; q=.2], >> accept-charset=[ISO-8859-1,__**utf-8;q=0.7,*;q=0.7], >> accept-encoding=[gzip,deflate]**__, >> accept-language=[en,en-gb;q=0.**__7,en-us;q=0.3], >> cache-control=[max-age=0], >> connection=[keep-alive], Content-Type=[null], >> host=[localhost:8080], >> keep-alive=[115], user-agent=[Mozilla/5.0 (X11; U; Linux >> i686; en-US; >> rv:1.9.2.16) Gecko/20110323 Ubuntu/10.04 (lucid) >> Firefox/3.6.16]} >> >> INFO: DEBUG [http-thread-pool-8080(1)] >> (PhaseInterceptorChain.java:__**205) >> - Adding interceptor >> org.apache.cxf.transport.__**https.__** >> CertConstraintsInterceptor@__**f6c321 >> >> to >> phase pre-stream >> >> INFO: DEBUG [http-thread-pool-8080(1)] >> (PhaseInterceptorChain.java:__**674) >> - Chain >> org.apache.cxf.phase.__**PhaseInterceptorChain@10a516fwas >> >> created. >> Current flow: >> receive [PolicyInInterceptor] >> pre-stream [CertConstraintsInterceptor] >> unmarshal [JAXRSInInterceptor] >> pre-logical [OneWayProcessorInterceptor] >> invoke [ServiceInvokerInterceptor] >> post-invoke [OutgoingChainInterceptor] >> >> INFO: DEBUG [http-thread-pool-8080(1)] >> (PhaseInterceptorChain.java:__**259) >> >> - Invoking handleMessage on interceptor >> org.apache.cxf.ws.policy.__**PolicyInInterceptor@1b7aa8e >> >> INFO: DEBUG [http-thread-pool-8080(1)] >> (PhaseInterceptorChain.java:__**259) >> >> - Invoking handleMessage on interceptor >> org.apache.cxf.transport.__**https.__** >> CertConstraintsInterceptor@__**f6c321 >> >> INFO: DEBUG [http-thread-pool-8080(1)] >> (PhaseInterceptorChain.java:__**259) >> >> - Invoking handleMessage on interceptor >> org.apache.cxf.jaxrs.__**interceptor.__** >> JAXRSInInterceptor@2bc9ae >> >> INFO: DEBUG [http-thread-pool-8080(1)] >> (__**WebApplicationExceptionMapper.**__java:62) - >> >> WebApplicationException has >> been caught, status: 406 >> javax.ws.rs <http://javax.ws.rs>.__** >> WebApplicationException >> at >> org.apache.cxf.jaxrs.__**interceptor.__** >> JAXRSInInterceptor.__**processRequest(__**JAXRSInInterceptor.java:139) >> >> at >> org.apache.cxf.jaxrs.__**interceptor.__** >> JAXRSInInterceptor.__**handleMessage(__**JAXRSInInterceptor.java:89) >> >> at >> org.apache.cxf.phase.__**PhaseInterceptorChain.__** >> doIntercept(__**PhaseInterceptorChain.java:__**262) >> >> at >> org.apache.cxf.transport.__**ChainInitiationObserver.__** >> onMessage(__**ChainInitiationObserver.java:_**_123) >> >> at >> org.apache.cxf.transport.http.** >> __AbstractHTTPDestination.__**invoke(__**AbstractHTTPDestination.java:_** >> _211) >> >> at >> org.apache.cxf.transport.__**servlet.ServletController.__ >> **invokeDestination(__**ServletController.java:213) >> >> at >> org.apache.cxf.transport.__**servlet.ServletController.__ >> **invoke(ServletController.java:**__154) >> >> at >> org.apache.cxf.transport.__** >> servlet.CXFNonSpringServlet.__**invoke(CXFNonSpringServlet.__**java:129) >> >> at >> org.apache.cxf.transport.__** >> servlet.AbstractHTTPServlet.__**handleRequest(__** >> AbstractHTTPServlet.java:187) >> >> at >> org.apache.cxf.transport.__** >> servlet.AbstractHTTPServlet.__**doGet(AbstractHTTPServlet.__**java:115) >> >> at >> javax.servlet.http.__**HttpServlet.service(__** >> HttpServlet.java:668) >> at >> org.apache.cxf.transport.__** >> servlet.AbstractHTTPServlet.__**service(AbstractHTTPServlet.__**java:166) >> >> at >> org.apache.catalina.core.__**StandardWrapper.service(__** >> StandardWrapper.java:1542) >> >> at >> org.apache.catalina.core.__** >> StandardWrapperValve.invoke(__**StandardWrapperValve.java:281) >> >> at >> org.apache.catalina.core.__** >> StandardContextValve.invoke(__**StandardContextValve.java:175) >> >> at >> org.apache.catalina.core.__**StandardPipeline.doInvoke(__ >> **StandardPipeline.java:655) >> >> at >> org.apache.catalina.core.__**StandardPipeline.invoke(__** >> StandardPipeline.java:595) >> >> at >> org.apache.catalina.core.__**StandardHostValve.invoke(__* >> *StandardHostValve.java:161) >> >> at >> org.apache.catalina.connector.** >> __CoyoteAdapter.doService(__**CoyoteAdapter.java:331) >> >> at >> org.apache.catalina.connector.** >> __CoyoteAdapter.service(__**CoyoteAdapter.java:231) >> >> at >> com.sun.enterprise.v3.__**services.impl.ContainerMapper$* >> *__AdapterCallable.call(__**ContainerMapper.java:317) >> >> at >> com.sun.enterprise.v3.__**services.impl.ContainerMapper.* >> *__service(ContainerMapper.**java:__195) >> >> at >> com.sun.grizzly.http.__**ProcessorTask.invokeAdapter(__** >> ProcessorTask.java:849) >> at >> com.sun.grizzly.http.__**ProcessorTask.doProcess(__** >> ProcessorTask.java:746) >> at >> com.sun.grizzly.http.__**ProcessorTask.process(__** >> ProcessorTask.java:1045) >> at >> com.sun.grizzly.http.__**DefaultProtocolFilter.execute(** >> __DefaultProtocolFilter.java:_**_228) >> >> at >> com.sun.grizzly.__**DefaultProtocolChain.__** >> executeProtocolFilter(__**DefaultProtocolChain.java:137) >> >> at >> com.sun.grizzly.__**DefaultProtocolChain.execute(_** >> _DefaultProtocolChain.java:**104) >> >> at >> com.sun.grizzly.__**DefaultProtocolChain.execute(_** >> _DefaultProtocolChain.java:90) >> >> at >> com.sun.grizzly.http.__**HttpProtocolChain.execute(__** >> HttpProtocolChain.java:79) >> at >> com.sun.grizzly.__**ProtocolChainContextTask.__** >> doCall(__**ProtocolChainContextTask.java:**__54) >> >> at >> com.sun.grizzly.__**SelectionKeyContextTask.call(_** >> _SelectionKeyContextTask.java:**__59) >> >> at com.sun.grizzly.ContextTask.__** >> run(ContextTask.java:71) >> at >> com.sun.grizzly.util.__**AbstractThreadPool$Worker.__** >> doWork(AbstractThreadPool.__**java:532) >> >> at >> com.sun.grizzly.util.__**AbstractThreadPool$Worker.run(** >> __AbstractThreadPool.java:513) >> >> at java.lang.Thread.run(Thread.__**java:722) >> >> INFO: DEBUG [http-thread-pool-8080(1)] >> (PhaseInterceptorChain.java:__**259) >> >> - Invoking handleMessage on interceptor >> org.apache.cxf.interceptor.__** >> OneWayProcessorInterceptor@__**1823fd1 >> >> INFO: DEBUG [http-thread-pool-8080(1)] >> (PhaseInterceptorChain.java:__**259) >> >> - Invoking handleMessage on interceptor >> org.apache.cxf.interceptor.__**ServiceInvokerInterceptor@ >> __**11e787e >> >> INFO: DEBUG [http-thread-pool-8080(1)] >> (PhaseInterceptorChain.java:__**259) >> >> - Invoking handleMessage on interceptor >> org.apache.cxf.interceptor.__**OutgoingChainInterceptor@ >> __**178c3da >> >> INFO: DEBUG [http-thread-pool-8080(1)] >> (OutgoingChainInterceptor.__**java:176) - Interceptors >> contributed by bus: >> [org.apache.cxf.ws.policy.__** >> PolicyOutInterceptor@1351523] >> >> INFO: DEBUG [http-thread-pool-8080(1)] >> (OutgoingChainInterceptor.__**java:180) - Interceptors >> >> contributed by >> service: [] >> >> INFO: DEBUG [http-thread-pool-8080(1)] >> (OutgoingChainInterceptor.__**java:184) - Interceptors >> contributed by >> endpoint: >> [org.apache.cxf.interceptor.__**MessageSenderInterceptor@ >> __**1fec925] >> >> INFO: DEBUG [http-thread-pool-8080(1)] >> (OutgoingChainInterceptor.__**java:190) - Interceptors >> contributed by >> binding: >> [org.apache.cxf.jaxrs.__**interceptor.__** >> JAXRSOutInterceptor@47dcc2] >> >> INFO: DEBUG [http-thread-pool-8080(1)] >> (PhaseInterceptorChain.java:__**674) >> - Chain >> org.apache.cxf.phase.__**PhaseInterceptorChain@90d38 was >> >> created. >> Current flow: >> setup [PolicyOutInterceptor] >> prepare-send [MessageSenderInterceptor] >> marshal [JAXRSOutInterceptor] >> >> INFO: DEBUG [http-thread-pool-8080(1)] >> (PhaseInterceptorChain.java:__**259) >> >> - Invoking handleMessage on interceptor >> org.apache.cxf.ws.policy.__**PolicyOutInterceptor@1351523 >> >> >> INFO: DEBUG [http-thread-pool-8080(1)] >> (PolicyOutInterceptor.java:63) - >> No binding operation info. >> >> INFO: DEBUG [http-thread-pool-8080(1)] >> (PhaseInterceptorChain.java:__**259) >> >> - Invoking handleMessage on interceptor >> org.apache.cxf.interceptor.__**MessageSenderInterceptor@ >> __**1fec925 >> >> INFO: DEBUG [http-thread-pool-8080(1)] >> (PhaseInterceptorChain.java:__**205) >> - Adding interceptor >> org.apache.cxf.interceptor.__** >> MessageSenderInterceptor$__**MessageSenderEndingInterceptor**__@9e362f >> >> >> to phase prepare-send-ending >> >> INFO: DEBUG [http-thread-pool-8080(1)] >> (PhaseInterceptorChain.java:__**672) >> - Chain >> org.apache.cxf.phase.__**PhaseInterceptorChain@90d38 was >> >> modified. >> Current flow: >> setup [PolicyOutInterceptor] >> prepare-send [MessageSenderInterceptor] >> marshal [JAXRSOutInterceptor] >> prepare-send-ending [__**MessageSenderEndingInterceptor** >> __] >> >> INFO: DEBUG [http-thread-pool-8080(1)] >> (PhaseInterceptorChain.java:__**259) >> >> - Invoking handleMessage on interceptor >> org.apache.cxf.jaxrs.__**interceptor.__** >> JAXRSOutInterceptor@47dcc2 >> >> INFO: DEBUG [http-thread-pool-8080(1)] >> (PhaseInterceptorChain.java:__**259) >> >> - Invoking handleMessage on interceptor >> org.apache.cxf.interceptor.__** >> MessageSenderInterceptor$__**MessageSenderEndingInterceptor**__@9e362f >> >> >> >> INFO: DEBUG [http-thread-pool-8080(1)] >> (ServletController.java:218) - >> Finished servicing http request on thread: >> Thread[http-thread-pool-8080(_**_1),5,grizzly-kernel] >> >> >> >> Thanks again for your help. >> >> >> >> >> >> On Thu, Jul 19, 2012 at 12:54 PM, Sergey Beryozkin >> <sberyoz...@gmail.com <mailto:sberyoz...@gmail.com> >> <mailto:sberyoz...@gmail.com >> >> <mailto:sberyoz...@gmail.com>>**> wrote: >> >> Hi, >> >> On 19/07/12 17:37, java kurious wrote: >> >> I am getting following 406 error when sending a request >> to a >> REST service. >> >> [#|2012-07-19T11:00:50.226-___** >> _0400|INFO|glassfish3.1.1|____**javax.enterprise.system.std.__** >> __com.sun.enterprise.server.__**__logging|_ThreadID=128;_____** >> ThreadName=Thread-2;|DEBUG >> >> [http-thread-pool-28181(4)] >> (____**WebApplicationExceptionMapper.**____java:62) - >> >> *WebApplicationException >> has been caught, status: 406* >> >> javax.ws.rs <http://javax.ws.rs> >> <http://javax.ws.rs>.____**WebApplicationException >> at >> org.apache.cxf.jaxrs.____**interceptor.____** >> JAXRSInInterceptor.____**processRequest(____** >> JAXRSInInterceptor.java:139) >> >> at >> org.apache.cxf.jaxrs.____**interceptor.____** >> JAXRSInInterceptor.____**handleMessage(____**JAXRSInInterceptor.java:89) >> >> >> >> >> >> INFO: DEBUG [http-thread-pool-8080(5)] >> (Headers.java:347) - Request >> Headers: {*Accept=[text/html, image/gif, image/jpeg, *; >> q=.2, >> */*; q=.2*], >> >> accept-charset=[ISO-8859-1,___**_utf-8;q=0.7,*;q=0.7], >> accept-encoding=[gzip,deflate]**____, >> accept-language=[en,en-gb;q=0.**____7,en-us;q=0.3], >> >> cache-control=[max-age=0], >> connection=[keep-alive], Content-Type=[null], >> host=[localhost:8080], >> keep-alive=[115], user-agent=[Mozilla/5.0 (X11; U; Linux >> i686; >> en-US; >> rv:1.9.2.16) Gecko/20110323 Ubuntu/10.04 (lucid) >> Firefox/3.6.16]} >> >> >> Can you provide a bit more info please ? >> There has to be some more debug statements showing which >> resource >> methods have been checked. >> >> How does the resource method signature look like ? I can >> see a >> wilcard (*/*) available in Accept, but what may happen >> for example >> is that some bean is returned but say it can not be >> handled by JAXB, etc >> >> Cheers, Sergey >> >> >> >> >> I saw the discussion on following link: >> >> http://cxf.547215.n5.nabble.__**__com/Jersey-CXF-** >> compatibility-____td5437938.**html >> >> >> <http://cxf.547215.n5.nabble._** >> _com/Jersey-CXF-compatibility-**__td5437938.html >> <http://cxf.547215.n5.nabble.** >> com/Jersey-CXF-compatibility-**td5437938.html<http://cxf.547215.n5.nabble.com/Jersey-CXF-compatibility-td5437938.html> >> >> >> >> I am wondering if the fix has been made and if so, which >> jar >> file do I need >> to upgrade. Following are the direct dependencies I have >> declared related >> to cxf: >> >> <dependency> >> <groupId>org.apache.camel</___**_groupId> >> <artifactId>camel-cxf</____**artifactId> >> >> <version>2.9.1</version> >> </dependency> >> <dependency> >> <groupId>org.apache.camel</___**_groupId> >> <artifactId>camel-cxf-____**transport</artifactId> >> >> <version>2.9.1</version> >> </dependency> >> <dependency> >> <groupId>org.apache.cxf</____**groupId> >> <artifactId>cxf-rt-frontend-__**__jaxrs</artifactId> >> >> <version>2.6.1</version> >> </dependency> >> <dependency> >> <groupId>org.apache.cxf</____**groupId> >> <artifactId>cxf-bundle</____**artifactId> >> >> <version>2.6.1</version> >> </dependency> >> >> >> Thanks for any help. >> >> >> >> >> >> >> > > -- > Sergey Beryozkin > > Talend Community Coders > http://coders.talend.com/ > > Blog: http://sberyozkin.blogspot.com >