Details
-
Type:
Bug
-
Status:
Closed
-
Priority:
Major
-
Resolution: Fixed
-
Affects Version/s: 1.24
-
Fix Version/s: 1.26
-
Component/s: None
-
Labels:None
-
Number of attachments :2
Description
Hi,
I have currently got a problem with some of my endpoints. All the endpoints mapped to /rest work, but the /excel, /json and /xml doesn't.
But it seems that adding the header application/json to the /rest endpoint will produce JSON in the result, so our conclusion is that the Enunciate-generated URl's don't work..
This URL work:
http://localhost:8080/api/rest/query/SimpleMasterDataQuery?includeChildren=true&includeAttributes=true
These URLs doesn't work:
http://localhost:8080/api/excel/query/SimpleMasterDataQuery?includeChildren=true&includeAttributes=true
http://localhost:8080/api/json/query/SimpleMasterDataQuery?includeChildren=true&includeAttributes=true
http://localhost:8080/api/xml/query/SimpleMasterDataQuery?includeChildren=true&includeAttributes=true
This is the output:
2012-01-21 07:45:35,093 DEBUG [org.jboss.resteasy.core.SynchronousDispatcher] [mds] [anonymousUser] PathInfo: /excel/query/SimpleMasterDataQuery
2012-01-21 07:45:35,094 DEBUG [org.jboss.resteasy.core.SynchronousDispatcher] [mds] [anonymousUser] PathInfo: /api/excel/query/SimpleMasterDataQuery
2012-01-21 07:45:35,094 DEBUG [org.jboss.resteasy.core.SynchronousDispatcher] [mds] [anonymousUser] Failed executing GET /api/excel/query/SimpleMasterDataQuery: org.jboss.resteasy.spi.NotFoundException: Could not find resource for relative : /api/excel/query/SimpleMasterDataQuery of full path: http://localhost:8080/api/excel/query/SimpleMasterDataQuery?includeChildren=true&includeAttributes=true
at org.jboss.resteasy.core.registry.RootSegment.matchChildren(RootSegment.java:360) [:6.1.0.Final]
at org.jboss.resteasy.core.registry.RootSegment.matchRoot(RootSegment.java:374) [:6.1.0.Final]
at org.jboss.resteasy.core.registry.RootSegment.matchRoot(RootSegment.java:367) [:6.1.0.Final]
at org.jboss.resteasy.core.ResourceMethodRegistry.getResourceInvoker(ResourceMethodRegistry.java:251) [:6.1.0.Final]
at org.jboss.resteasy.core.SynchronousDispatcher.getInvoker(SynchronousDispatcher.java:173) [:6.1.0.Final]
at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:118) [:6.1.0.Final]
at org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:208) [:6.1.0.Final]
at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:55) [:6.1.0.Final]
at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:50) [:6.1.0.Final]
at javax.servlet.http.HttpServlet.service(HttpServlet.java:847) [:1.0.0.Final]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:324) [:6.1.0.Final]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:242) [:6.1.0.Final]
at org.jboss.resteasy.plugins.server.servlet.FilterDispatcher.doFilter(FilterDispatcher.java:63) [:6.1.0.Final]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:274) [:6.1.0.Final]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:242) [:6.1.0.Final]
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:369) [:3.0.7.RELEASE]
at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:99) [:3.0.7.RELEASE]
at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83) [:3.0.7.RELEASE]
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:381) [:3.0.7.RELEASE]
at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:97) [:3.0.7.RELEASE]
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:381) [:3.0.7.RELEASE]
at com.tracetracker.web.filter.Jboss6LogContextPopulatorFilter.doFilter(Jboss6LogContextPopulatorFilter.java:103) [:]
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:381) [:3.0.7.RELEASE]
at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:78) [:3.0.7.RELEASE]
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:381) [:3.0.7.RELEASE]
at com.tracetracker.web.filter.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:59) [:]
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:381) [:3.0.7.RELEASE]
at org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilter(BasicAuthenticationFilter.java:177) [:3.0.7.RELEASE]
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:381) [:3.0.7.RELEASE]
at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:57) [:3.0.7.RELEASE]
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:381) [:3.0.7.RELEASE]
at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:168) [:3.0.7.RELEASE]
at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237) [:3.0.6.RELEASE]
at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167) [:3.0.6.RELEASE]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:274) [:6.1.0.Final]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:242) [:6.1.0.Final]
at org.codehaus.enunciate.webapp.HTTPRequestContextFilter.doFilter(HTTPRequestContextFilter.java:36) [:]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:274) [:6.1.0.Final]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:242) [:6.1.0.Final]
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:369) [:3.0.7.RELEASE]
at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:109) [:3.0.7.RELEASE]
at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83) [:3.0.7.RELEASE]
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:381) [:3.0.7.RELEASE]
at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:97) [:3.0.7.RELEASE]
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:381) [:3.0.7.RELEASE]
at com.tracetracker.web.filter.Jboss6LogContextPopulatorFilter.doFilter(Jboss6LogContextPopulatorFilter.java:103) [:]
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:381) [:3.0.7.RELEASE]
at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:78) [:3.0.7.RELEASE]
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:381) [:3.0.7.RELEASE]
at com.tracetracker.web.filter.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:59) [:]
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:381) [:3.0.7.RELEASE]
at org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilter(BasicAuthenticationFilter.java:177) [:3.0.7.RELEASE]
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:381) [:3.0.7.RELEASE]
at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:79) [:3.0.7.RELEASE]
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:381) [:3.0.7.RELEASE]
at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:168) [:3.0.7.RELEASE]
at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237) [:3.0.6.RELEASE]
at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167) [:3.0.6.RELEASE]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:274) [:6.1.0.Final]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:242) [:6.1.0.Final]
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275) [:6.1.0.Final]
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161) [:6.1.0.Final]
at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:181) [:6.1.0.Final]
at org.jboss.modcluster.catalina.CatalinaContext$RequestListenerValve.event(CatalinaContext.java:285) [:1.1.0.Final]
at org.jboss.modcluster.catalina.CatalinaContext$RequestListenerValve.invoke(CatalinaContext.java:261) [:1.1.0.Final]
at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:88) [:6.1.0.Final]
at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invoke(SecurityContextEstablishmentValve.java:100) [:6.1.0.Final]
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:159) [:6.1.0.Final]
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) [:6.1.0.Final]
at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:158) [:6.1.0.Final]
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) [:6.1.0.Final]
at org.jboss.web.tomcat.service.request.ActiveRequestResponseCacheValve.invoke(ActiveRequestResponseCacheValve.java:53) [:6.1.0.Final]
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:362) [:6.1.0.Final]
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877) [:6.1.0.Final]
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:654) [:6.1.0.Final]
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:951) [:6.1.0.Final]
at java.lang.Thread.run(Thread.java:662) [:1.6.0_26]
-
Hide
- enunciate-654.zip
- 01/Jun/12 5:53 PM
- 20 kB
- Frode Aannevik
-
- enunciate-654/.DS_Store 6 kB
- __MACOSX/enunciate-654/._.DS_Store 0.5 kB
- enunciate-654/pom.xml 8 kB
- __MACOSX/enunciate-654/._pom.xml 0.5 kB
- enunciate-654/README.md 0.6 kB
- __MACOSX/enunciate-654/._README.md 0.2 kB
- enunciate-654/src/.DS_Store 6 kB
- __MACOSX/enunciate-654/src/._.DS_Store 0.5 kB
- enunciate-654/src/main/.DS_Store 6 kB
- __MACOSX/enunciate-654/.../main/._.DS_Store 0.5 kB
- enunciate-654/src/.../conf/enunciate.xml 0.7 kB
- __MACOSX/enunciate-654/.../._enunciate.xml 0.2 kB
- enunciate-654/src/.../enunciate/Person.java 0.8 kB
- __MACOSX/enunciate-654/.../._Person.java 0.2 kB
- enunciate-654/src/.../Resource.java 0.5 kB
- __MACOSX/enunciate-654/.../._Resource.java 0.2 kB
- enunciate-654/src/.../META-INF/beans.xml 0.4 kB
- enunciate-654/src/main/webapp/home.xhtml 0.6 kB
- __MACOSX/enunciate-654/.../._home.xhtml 0.2 kB
- enunciate-654/src/main/webapp/index.html 0.1 kB
- enunciate-654/src/.../META-INF/context.xml 0.5 kB
- enunciate-654/src/.../META-INF/MANIFEST.MF 0.0 kB
- enunciate-654/src/.../faces-config.xml 0.3 kB
- __MACOSX/.../._faces-config.xml 0.2 kB
- enunciate-654/src/.../WEB-INF/jboss-web.xml 0.1 kB
- __MACOSX/enunciate-654/.../._jboss-web.xml 0.2 kB
- enunciate-654/src/.../WEB-INF/jetty-env.xml 0.6 kB
- enunciate-654/src/main/.../WEB-INF/web.xml 1 kB
- __MACOSX/enunciate-654/.../WEB-INF/._web.xml 0.2 kB
- enunciate-654/src/test/.DS_Store 6 kB
-
- enunciate-654-2.tar.gz
- 19/Jun/12 9:52 AM
- 5 kB
- Jan Erik Robertsen
Activity
Sorry, I'm at a conference that finishes tomorrow. Haven't had time to apply myself to this.
Can you try attaching a debugger to org.codehaus.enunciate.jboss.PathBasedConnegHttpPreprocessor and see how it's behaving?
preprocessedPath = "/xml/query/SimpleEventQuery"
When trying to iterate the mediaTypeMappings, it's empty! Any input Ryan?
Do you see an init param in the web.xml file named resteasy.media.type.mappings? That's what JBoss should be using to provide those mappings....
Yes, there is an init-param called resteasy.media.type.mappings!
<servlet>
<servlet-name>resteasy-jaxrs</servlet-name>
<servlet-class>org.codehaus.enunciate.jboss.EnunciateJBossHttpServletDispatcher</servlet-class>
<init-param>
<param-name>resteasy.media.type.mappings</param-name>
<param-value>xml : application/xml</param-value>
</init-param>
<init-param>
<param-name>resteasy.resources</param-name>
<param-value>com.tracetracker.tix.web.api.epcis.EpcisServicePort,com.tracetracker.tix.web.api.admin.AdminApi,com.tracetracker.tix.web.api.query.QueryApi,com.tracetracker.tix.web.api.object.ObjectApi,com.tracetracker.tix.web.api.event.EventApi,com.tracetracker.tix.web.api.about.AboutApi</param-value>
</init-param>
<init-param>
<param-name>resteasy.servlet.mapping.prefix</param-name>
<param-value>/api/xml</param-value>
</init-param>
<init-param>
<param-name>resteasy.providers</param-name>
<param-value />
</init-param>
<init-param>
<param-name>resteasy.scan</param-name>
<param-value>false</param-value>
</init-param>
</servlet>
I guess I need to be able to reproduce it. I can't figure out why your set of media type mappings is empty. That init-param is still applicable as far as I can tell.
You say it happened with your update to Spring 3, right? Were there any other changes/updates that might have affected this? Can you give me some way to reproduce it locally?
Ryan, if you give me some places I can debug this locally then I think it might be faster than trying to give you something to reproduce.
My generated web.xml looks like this:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" 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>TIX API</display-name>
<context-param>
<param-name>javax.faces.PROJECT_STAGE</param-name>
<param-value>Development</param-value>
</context-param>
<context-param>
<param-name>auth-type</param-name>
<param-value>FORM</param-value>
</context-param>
<context-param>
<param-name>primefaces.THEME</param-name>
<param-value>redmond</param-value>
</context-param>
<filter>
<filter-name>UrlRewriteFilter</filter-name>
<filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
<init-param>
<param-name>confReloadCheckInterval</param-name>
<param-value>10</param-value>
</init-param>
</filter>
<filter>
<filter-name>springSecurityFilterChain</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter>
<filter-name>NodeSelectorFilter</filter-name>
<filter-class>com.tracetracker.tix.web.NodeSelectorFilter</filter-class>
</filter>
<filter>
<filter-name>HTTPRequestContextFilter</filter-name>
<filter-class>org.codehaus.enunciate.webapp.HTTPRequestContextFilter</filter-class>
</filter>
<filter>
<filter-name>PrimeFaces FileUpload Filter</filter-name>
<filter-class>org.primefaces.webapp.filter.FileUploadFilter</filter-class>
<init-param>
<param-name>thresholdSize</param-name>
<param-value>2097152</param-value>
</init-param>
</filter>
<filter>
<filter-name>http-request-context</filter-name>
<filter-class>org.codehaus.enunciate.webapp.HTTPRequestContextFilter</filter-class>
</filter>
<filter>
<filter-name>wadl-filter</filter-name>
<filter-class>org.codehaus.enunciate.webapp.WADLFilter</filter-class>
<init-param>
<param-name>assumed-base-address</param-name>
<param-value>http://localhost:8080/TIX API</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>UrlRewriteFilter</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
</filter-mapping>
<filter-mapping>
<filter-name>springSecurityFilterChain</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
</filter-mapping>
<filter-mapping>
<filter-name>NodeSelectorFilter</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
</filter-mapping>
<filter-mapping>
<filter-name>HTTPRequestContextFilter</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
</filter-mapping>
<filter-mapping>
<filter-name>PrimeFaces FileUpload Filter</filter-name>
<servlet-name>Faces Servlet</servlet-name>
</filter-mapping>
<filter-mapping>
<filter-name>http-request-context</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>wadl-filter</filter-name>
<url-pattern>/application.wadl</url-pattern>
</filter-mapping>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
<servlet-name>GapServlet</servlet-name>
<servlet-class>com.tracetracker.tix.gap.GanService</servlet-class>
</servlet>
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet>
<servlet-name>APIRedirectServlet</servlet-name>
<servlet-class>com.tracetracker.web.RedirectServlet</servlet-class>
<init-param>
<param-name>url</param-name>
<param-value>api.html</param-value>
</init-param>
</servlet>
<servlet>
<servlet-name>ConsoleRedirectServlet</servlet-name>
<servlet-class>com.tracetracker.web.RedirectServlet</servlet-class>
<init-param>
<param-name>url</param-name>
<param-value>faces/search/findEPC.xhtml</param-value>
</init-param>
</servlet>
<servlet>
<servlet-name>resteasy-jaxrs</servlet-name>
<servlet-class>org.codehaus.enunciate.jboss.EnunciateJBossHttpServletDispatcher</servlet-class>
<init-param>
<param-name>resteasy.media.type.mappings</param-name>
<param-value>xml : application/xml, json : application/json</param-value>
</init-param>
<init-param>
<param-name>resteasy.resources</param-name>
<param-value>com.tracetracker.tix.web.api.epcis.EpcisServicePort,com.tracetracker.tix.web.api.admin.AdminApi,com.tracetracker.tix.web.api.query.QueryApi,com.tracetracker.tix.web.api.query.UnconfirmedLinksApi,com.tracetracker.tix.web.api.object.ObjectApi,com.tracetracker.tix.web.api.trd.TRDApi,com.tracetracker.tix.web.api.event.EventApi,com.tracetracker.tix.web.api.deprecated.DeprecatedApi,com.tracetracker.tix.web.api.about.AboutApi</param-value>
</init-param>
<init-param>
<param-name>resteasy.servlet.mapping.prefix</param-name>
<param-value>/api/xml</param-value>
</init-param>
<init-param>
<param-name>resteasy.providers</param-name>
<param-value>org.codehaus.enunciate.jboss.ResteasyJacksonJaxbProvider</param-value>
</init-param>
<init-param>
<param-name>resteasy.scan</param-name>
<param-value>false</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>GapServlet</servlet-name>
<url-pattern>/invoker/hessian/GanService</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>APIRedirectServlet</servlet-name>
<url-pattern>/api</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>/faces/*</url-pattern>
<url-pattern>*.jsf</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>resteasy-jaxrs</servlet-name>
<url-pattern>/api/xml/about</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>resteasy-jaxrs</servlet-name>
<url-pattern>/api/xml/admin/queue/import</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>resteasy-jaxrs</servlet-name>
<url-pattern>/api/xml/admin/queue/importError</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>resteasy-jaxrs</servlet-name>
<url-pattern>/api/xml/event</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>resteasy-jaxrs</servlet-name>
<url-pattern>/api/xml/event/CountEventQuery</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>resteasy-jaxrs</servlet-name>
<url-pattern>/api/xml/event/ExtendedEventQuery</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>resteasy-jaxrs</servlet-name>
<url-pattern>/api/xml/event/SimpleEventQuery</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>resteasy-jaxrs</servlet-name>
<url-pattern>/api/xml/event/SimpleEventTrace</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>resteasy-jaxrs</servlet-name>
<url-pattern>/api/xml/event/SimpleMasterDataQuery</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>resteasy-jaxrs</servlet-name>
<url-pattern>/api/xml/event/subscription/getQueryNames</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>resteasy-jaxrs</servlet-name>
<url-pattern>/api/xml/event/subscription/getSubscriptionIds</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>resteasy-jaxrs</servlet-name>
<url-pattern>/api/xml/event/subscription/subscribe</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>resteasy-jaxrs</servlet-name>
<url-pattern>/api/xml/event/subscription/unsubscribe</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>resteasy-jaxrs</servlet-name>
<url-pattern>/api/xml/gci/deleteTRD</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>resteasy-jaxrs</servlet-name>
<url-pattern>/api/xml/gci/importTRD</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>resteasy-jaxrs</servlet-name>
<url-pattern>/api/xml/object</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>resteasy-jaxrs</servlet-name>
<url-pattern>/api/xml/query/incomingPendingAcceptance</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>resteasy-jaxrs</servlet-name>
<url-pattern>/api/xml/query/incomingPendingShipment</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>resteasy-jaxrs</servlet-name>
<url-pattern>/api/xml/query/outgoingPendingAcceptance</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>resteasy-jaxrs</servlet-name>
<url-pattern>/api/xml/query/outgoingPendingShipment</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>resteasy-jaxrs</servlet-name>
<url-pattern>/api/xml/trd</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>resteasy-jaxrs</servlet-name>
<url-pattern>/json/about</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>resteasy-jaxrs</servlet-name>
<url-pattern>/json/admin/queue/import</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>resteasy-jaxrs</servlet-name>
<url-pattern>/json/admin/queue/importError</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>resteasy-jaxrs</servlet-name>
<url-pattern>/json/event</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>resteasy-jaxrs</servlet-name>
<url-pattern>/json/event/CountEventQuery</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>resteasy-jaxrs</servlet-name>
<url-pattern>/json/event/ExtendedEventQuery</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>resteasy-jaxrs</servlet-name>
<url-pattern>/json/event/SimpleEventQuery</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>resteasy-jaxrs</servlet-name>
<url-pattern>/json/event/SimpleEventTrace</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>resteasy-jaxrs</servlet-name>
<url-pattern>/json/event/SimpleMasterDataQuery</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>resteasy-jaxrs</servlet-name>
<url-pattern>/json/event/subscription/getQueryNames</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>resteasy-jaxrs</servlet-name>
<url-pattern>/json/event/subscription/getSubscriptionIds</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>resteasy-jaxrs</servlet-name>
<url-pattern>/json/event/subscription/subscribe</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>resteasy-jaxrs</servlet-name>
<url-pattern>/json/event/subscription/unsubscribe</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>resteasy-jaxrs</servlet-name>
<url-pattern>/json/gci/deleteTRD</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>resteasy-jaxrs</servlet-name>
<url-pattern>/json/gci/importTRD</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>resteasy-jaxrs</servlet-name>
<url-pattern>/json/object</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>resteasy-jaxrs</servlet-name>
<url-pattern>/json/query/incomingPendingAcceptance</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>resteasy-jaxrs</servlet-name>
<url-pattern>/json/query/incomingPendingShipment</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>resteasy-jaxrs</servlet-name>
<url-pattern>/json/query/outgoingPendingAcceptance</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>resteasy-jaxrs</servlet-name>
<url-pattern>/json/query/outgoingPendingShipment</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>resteasy-jaxrs</servlet-name>
<url-pattern>/json/trd</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>resteasy-jaxrs</servlet-name>
<url-pattern>/xml/about</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>resteasy-jaxrs</servlet-name>
<url-pattern>/xml/admin/queue/import</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>resteasy-jaxrs</servlet-name>
<url-pattern>/xml/admin/queue/importError</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>resteasy-jaxrs</servlet-name>
<url-pattern>/xml/event</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>resteasy-jaxrs</servlet-name>
<url-pattern>/xml/event/CountEventQuery</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>resteasy-jaxrs</servlet-name>
<url-pattern>/xml/event/ExtendedEventQuery</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>resteasy-jaxrs</servlet-name>
<url-pattern>/xml/event/SimpleEventQuery</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>resteasy-jaxrs</servlet-name>
<url-pattern>/xml/event/SimpleEventTrace</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>resteasy-jaxrs</servlet-name>
<url-pattern>/xml/event/SimpleMasterDataQuery</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>resteasy-jaxrs</servlet-name>
<url-pattern>/xml/event/subscription/getQueryNames</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>resteasy-jaxrs</servlet-name>
<url-pattern>/xml/event/subscription/getSubscriptionIds</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>resteasy-jaxrs</servlet-name>
<url-pattern>/xml/event/subscription/subscribe</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>resteasy-jaxrs</servlet-name>
<url-pattern>/xml/event/subscription/unsubscribe</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>resteasy-jaxrs</servlet-name>
<url-pattern>/xml/gci/deleteTRD</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>resteasy-jaxrs</servlet-name>
<url-pattern>/xml/gci/importTRD</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>resteasy-jaxrs</servlet-name>
<url-pattern>/xml/object</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>resteasy-jaxrs</servlet-name>
<url-pattern>/xml/query/incomingPendingAcceptance</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>resteasy-jaxrs</servlet-name>
<url-pattern>/xml/query/incomingPendingShipment</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>resteasy-jaxrs</servlet-name>
<url-pattern>/xml/query/outgoingPendingAcceptance</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>resteasy-jaxrs</servlet-name>
<url-pattern>/xml/query/outgoingPendingShipment</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>resteasy-jaxrs</servlet-name>
<url-pattern>/xml/trd</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>60</session-timeout>
</session-config>
<mime-mapping>
<extension>wsdl</extension>
<mime-type>text/xml</mime-type>
</mime-mapping>
<mime-mapping>
<extension>xsd</extension>
<mime-type>text/xml</mime-type>
</mime-mapping>
<welcome-file-list>
<welcome-file>faces/search/findEPC.xhtml</welcome-file>
</welcome-file-list>
<error-page>
<exception-type>javax.faces.application.ViewExpiredException</exception-type>
<location>/templates/master.xhtml</location>
</error-page>
</web-app>
I have added debug output to resteasy, which might give you some more hints about what is wrong?!
2012-04-18 13:14:32,313 DEBUG [org.jboss.resteasy.core.SynchronousDispatcher] [] [] PathInfo: /json/event/SimpleEventQuery 2012-04-18 13:14:32,314 DEBUG [org.jboss.resteasy.core.SynchronousDispatcher] [] [] PathInfo: /tix/json/event/SimpleEventQuery 2012-04-18 13:14:32,314 DEBUG [org.jboss.resteasy.core.SynchronousDispatcher] [] [] Failed executing GET /tix/json/event/SimpleEventQuery: org.jboss.resteasy.spi.NotFoundException: Could not find resource for relative : /tix/json/event/SimpleEventQuery of full path: http://localhost:8280/tix/json/event/SimpleEventQuery at org.jboss.resteasy.core.registry.RootSegment.matchChildren(RootSegment.java:360) [:6.1.0.Final] at org.jboss.resteasy.core.registry.RootSegment.matchRoot(RootSegment.java:374) [:6.1.0.Final] at org.jboss.resteasy.core.registry.RootSegment.matchRoot(RootSegment.java:367) [:6.1.0.Final] at org.jboss.resteasy.core.ResourceMethodRegistry.getResourceInvoker(ResourceMethodRegistry.java:251) [:6.1.0.Final] at org.jboss.resteasy.core.SynchronousDispatcher.getInvoker(SynchronousDispatcher.java:173) [:6.1.0.Final] at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:118) [:6.1.0.Final] at org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:208) [:6.1.0.Final] at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:55) [:6.1.0.Final] at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:50) [:6.1.0.Final] at javax.servlet.http.HttpServlet.service(HttpServlet.java:847) [:1.0.0.Final] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:324) [:6.1.0.Final] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:242) [:6.1.0.Final] at org.jboss.resteasy.plugins.server.servlet.FilterDispatcher.doFilter(FilterDispatcher.java:63) [:6.1.0.Final] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:274) [:6.1.0.Final] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:242) [:6.1.0.Final] at org.jboss.weld.servlet.ConversationPropagationFilter.doFilter(ConversationPropagationFilter.java:67) [:6.1.0.Final] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:274) [:6.1.0.Final] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:242) [:6.1.0.Final] at com.tracetracker.tix.web.RequestTimeFilter.doFilter(RequestTimeFilter.java:43) [:] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:274) [:6.1.0.Final] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:242) [:6.1.0.Final] at org.codehaus.enunciate.webapp.HTTPRequestContextFilter.doFilter(HTTPRequestContextFilter.java:36) [:] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:274) [:6.1.0.Final] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:242) [:6.1.0.Final] at org.codehaus.enunciate.webapp.HTTPRequestContextFilter.doFilter(HTTPRequestContextFilter.java:36) [:] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:274) [:6.1.0.Final] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:242) [:6.1.0.Final] at com.tracetracker.tix.web.NodeSelectorFilter.doFilter(NodeSelectorFilter.java:163) [:] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:274) [:6.1.0.Final] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:242) [:6.1.0.Final] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:311) [:3.1.0.RELEASE] at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:116) [:3.1.0.RELEASE] at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83) [:3.1.0.RELEASE] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323) [:3.1.0.RELEASE] at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113) [:3.1.0.RELEASE] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323) [:3.1.0.RELEASE] at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:101) [:3.1.0.RELEASE] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323) [:3.1.0.RELEASE] at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:113) [:3.1.0.RELEASE] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323) [:3.1.0.RELEASE] at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:54) [:3.1.0.RELEASE] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323) [:3.1.0.RELEASE] at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:45) [:3.1.0.RELEASE] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323) [:3.1.0.RELEASE] at org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilter(BasicAuthenticationFilter.java:201) [:3.1.0.RELEASE] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323) [:3.1.0.RELEASE] at org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilter(BasicAuthenticationFilter.java:201) [:3.1.0.RELEASE] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323) [:3.1.0.RELEASE] at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:182) [:3.1.0.RELEASE] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323) [:3.1.0.RELEASE] at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:87) [:3.1.0.RELEASE] at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323) [:3.1.0.RELEASE] at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:173) [:3.1.0.RELEASE] at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237) [:3.0.6.RELEASE] at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167) [:3.0.6.RELEASE] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:274) [:6.1.0.Final] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:242) [:6.1.0.Final] at org.tuckey.web.filters.urlrewrite.RuleChain.handleRewrite(RuleChain.java:176) [:3.2.0] at org.tuckey.web.filters.urlrewrite.RuleChain.doRules(RuleChain.java:145) [:3.2.0] at org.tuckey.web.filters.urlrewrite.UrlRewriter.processRequest(UrlRewriter.java:92) [:3.2.0] at org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:381) [:3.2.0] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:274) [:6.1.0.Final] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:242) [:6.1.0.Final] at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275) [:6.1.0.Final] at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161) [:6.1.0.Final] at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:181) [:6.1.0.Final] at org.jboss.modcluster.catalina.CatalinaContext$RequestListenerValve.event(CatalinaContext.java:285) [:1.1.0.Final] at org.jboss.modcluster.catalina.CatalinaContext$RequestListenerValve.invoke(CatalinaContext.java:261) [:1.1.0.Final] at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:88) [:6.1.0.Final] at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invoke(SecurityContextEstablishmentValve.java:100) [:6.1.0.Final] at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:159) [:6.1.0.Final] at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) [:6.1.0.Final] at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:158) [:6.1.0.Final] at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) [:6.1.0.Final] at org.jboss.web.tomcat.service.request.ActiveRequestResponseCacheValve.invoke(ActiveRequestResponseCacheValve.java:53) [:6.1.0.Final] at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:362) [:6.1.0.Final] at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877) [:6.1.0.Final] at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:654) [:6.1.0.Final] at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:951) [:6.1.0.Final] at java.lang.Thread.run(Thread.java:662) [:1.6.0_26]
Hi. Apologies for the lack of response on this.
So in order for Enunciate to provide resources at /xml or /json, it needs to have a mapping between the media type and the "id" of the media type, which is used to know what path to provide.
So, for xml and json, Enunciate needs to be supplied a map that looks like this:
"xml" -> "application/xml"
"json" -> "application/json"
...etc...
Fortunately, JBoss already had the concept of such a map. It was supplied in the "resteasy.media.type.mappings" property. When that init param was supplied, JBoss would build the map and make it available to the [http servlet dispatcher], which uses it to supply a [preprocessor] to REST requests which can do the necessary magic.
So somewhere along the way of your update, JBoss isn't providing those media type mappings anymore. But without a way to debug it, I can't find out what happened.
Hi Ryan, sent you a private mail about how you can reproduce this locally! Please tell me if you need more input ![]()
I have the same problem but it seems to only exist when deploying to JBoss, deploying the war in Jetty 6.1.25 (maven-jetty-plugin) works fine for all alternative endpoints.
I have the same problem but it seems to only exist when deploying to JBoss, deploying the war in Jetty 6.1.25 (maven-jetty-plugin) works fine for all alternative endpoints.
We're still trying to reproduce this error. Can you give me some details on how to reproduce it on my box?
I have attached a minimal maven project that reproduces this error...
To run the project in jetty
$ mvn jetty:run-war -Ptest
To build for JBoss 6
$ mvn clean install
Fixed at b56c4ed.
Workaround is to add the following context-param to the web.xml file that is getting merged:
<context-param> <param-name>resteasy.media.type.mappings</param-name> <param-value>xml : application/xml, json : application/json</param-value> </context-param>
I have a similar problem where I want to have the subContext for the REST endpoints include /api/...
I can get this to work for application/xml (and other content types) but not for application/json
I've attached enunciate-654-2.tar.gz which reproduces the problem.
In enunciate.xml I've used:
<services> <rest defaultRestSubcontext="api/xml"> <content-types> <content-type type="application/xml" id="api/xml" /> <content-type type="application/json" id="api/json" /> </content-types> </rest> </services>
And in web.xml I've included:
<context-param> <param-name>resteasy.media.type.mappings</param-name> <param-value> api/xml : application/xml, api/json : application/json </param-value> </context-param>
In the generated doc the links for the mount point and for alternate mount points are correct except for json, which is not prefixed with /api/
Hope you can help.
I'll try to take a look, but the subcontext mappings were never designed for multi-path contexts.
You may want to add a custom servlet filter that captures the relevant requests and redirects (server-side) them to the /api/endpoint after modifying the accept header...
Yes it feels like a bit of a hack.
But still, it seems to work nicely for other content-types.
Do you have some special handling for json, since that is added as an alternate mount point even though it is not specified in either enunciate.xml or in a @Produces annotation?
I'm going to close this issue out as resolved. If you'd like to open up a separate issue for multi-path contexts, we can track that work there.
Ryan, any updates on this issue?