From: <sa...@sl...> - 2009-08-29 00:35:23
|
Hi, I'm having trouble injecting ServletContext in my RESTeasy service class when I invoke it as asynchronous i.e with an asynch=true parameter. I've tried this with GET and POST. The call gets to the service but since ServletContext is needed by my app it just prints for me the error and errors out. Also, when I invoke the service without the asynch=true it seems to processes as I expect. Here is what I have: @GET @Path("result/{code}") @Produces("application/xml") *public* ResultBean getResult(@PathParam("code") ErrorCodeType errorCode, @QueryParam("msg") String errorMsg, @QueryParam("incidentId") @DefaultValue("1") Integer incidentId) *throws* ModuleException, HandlerException { debug("getResult"); ResultBean result = *new* ResultBean(); result.setErrorCode(errorCode); result.setErrorMsg(errorMsg); debug("checking servlet context"); *if* (getServletContext() != *null*) { debug("servletcontext.getserverinfo"); debug("serverinfo:" + getServletContext().getServerInfo()); } *else* { debug("ServletContext is null"); } *return* result; } web.xml: <!-- set this if you map the *Resteasy* *servlet* to something other than --> <context-param> <param-name>resteasy.servlet.mapping.prefix</param-name> <param-value>/*handsetservice*</param-value> </context-param> <context-param> <param-name>resteasy.resources</param-name> <param-value>com.cisco.ipics.handsetserviceapi.IncidentResourceManager</ param-value> </context-param> <!-- enable the Asynchronous Job Service --> <context-param> <param-name>resteasy.async.job.service.enabled</param-name> <param-value>true</param-value> </context-param> <!-- The next context parameters are all optional. Their default values are shown as example *param*-values --> <!-- How many jobs results can be held in memory at once? --> <context-param> <param-name>resteasy.async.job.service.max.job.results</param-name> <param-value>100</param-value> </context-param> <!-- Maximum wait time on a job when a client is querying for it --> <context-param> <param-name>resteasy.async.job.service.max.wait</param-name> <param-value>300000</param-value> </context-param> <!-- Thread pool size of background threads that run the job --> <context-param> <param-name>resteasy.async.job.service.thread.pool.size</param-name> <param-value>100</param-value> </context-param> <!-- Set the base path for the Job *uris* --> <context-param> <param-name>resteasy.async.job.service.base.path</param-name> <param-value>/*handsetservice*/*asynch*/jobs</param-value> </context-param> <listener> <listener-class>org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap </listener-class> </listener> <servlet> <servlet-name>*Resteasy*</servlet-name> <servlet-class> org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher</ servlet-class> </servlet> <servlet-mapping> <servlet-name>*Resteasy*</servlet-name> <url-pattern>/*handsetservice*/*</url-pattern> </servlet-mapping> Please let me know if there is a problem with a config or if this is a bug in the implementation. Regards, Samir |
From: <sa...@sl...> - 2009-08-29 00:37:46
|
Sorry I missed this part from code: * import* javax.servlet.ServletContext; @Context *private* ServletContext servletCtx; *protected* *void* setServletContext(ServletContext servletCtx) { *this*.servletCtx = servletCtx; } *protected* ServletContext getServletContext() { *return* servletCtx; } On Fri, Aug 28, 2009 at 5:35 PM, sa...@sl... <sa...@sl...>wrote: > Hi, > > I'm having trouble injecting ServletContext in my RESTeasy service class > when I invoke it as asynchronous i.e with an asynch=true parameter. I've > tried this with GET and POST. The call gets to the service but since > ServletContext is needed by my app it just prints for me the error and > errors out. Also, when I invoke the service without the asynch=true it seems > to processes as I expect. > > Here is what I have: > > @GET > > @Path("result/{code}") > > @Produces("application/xml") > > *public* ResultBean getResult(@PathParam("code") ErrorCodeType errorCode, > > @QueryParam("msg") String errorMsg, > > @QueryParam("incidentId") @DefaultValue("1") Integer incidentId) > > *throws* ModuleException, HandlerException { > > debug( > "getResult"); > > ResultBean result = > *new* ResultBean(); > > result.setErrorCode(errorCode); > > result.setErrorMsg(errorMsg); > > debug( > "checking servlet context"); > > *if* (getServletContext() != *null*) { > > debug( > "servletcontext.getserverinfo"); > > debug( > "serverinfo:" + getServletContext().getServerInfo()); > > } > *else* { > > debug( > "ServletContext is null"); > > } > > *return* result; > > } > > web.xml: > > <!-- set this if you map the *Resteasy* *servlet* to something other than > --> > > <context-param> > > <param-name>resteasy.servlet.mapping.prefix</param-name> > > <param-value>/*handsetservice*</param-value> > > </context-param> > > <context-param> > > <param-name>resteasy.resources</param-name> > > <param-value>com.cisco.ipics.handsetserviceapi.IncidentResourceManager</ > param-value> > > </context-param> > > <!-- enable the Asynchronous Job Service --> > > <context-param> > > <param-name>resteasy.async.job.service.enabled</param-name> > > <param-value>true</param-value> > > </context-param> > > <!-- The next context parameters are all optional. > > Their default values are shown as example *param*-values --> > > <!-- How many jobs results can be held in memory at once? --> > > <context-param> > > <param-name>resteasy.async.job.service.max.job.results</param-name> > > <param-value>100</param-value> > > </context-param> > > <!-- Maximum wait time on a job when a client is querying for it --> > > <context-param> > > <param-name>resteasy.async.job.service.max.wait</param-name> > > <param-value>300000</param-value> > > </context-param> > > <!-- Thread pool size of background threads that run the job --> > > <context-param> > > <param-name>resteasy.async.job.service.thread.pool.size</param-name> > > <param-value>100</param-value> > > </context-param> > > <!-- Set the base path for the Job *uris* --> > > <context-param> > > <param-name>resteasy.async.job.service.base.path</param-name> > > <param-value>/*handsetservice*/*asynch*/jobs</param-value> > > </context-param> > > > > > > <listener> > > <listener-class> > org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap</ > listener-class> > > </listener> > > <servlet> > > <servlet-name>*Resteasy*</servlet-name> > > <servlet-class> > org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher</ > servlet-class> > > </servlet> > > <servlet-mapping> > > <servlet-name>*Resteasy*</servlet-name> > > <url-pattern>/*handsetservice*/*</url-pattern> > > </servlet-mapping> > > > > Please let me know if there is a problem with a config or if this is a bug > in the implementation. > > Regards, > > Samir > |
From: Bill B. <bb...@re...> - 2009-08-29 12:50:05
|
Probably a bug. I'll look into it. sa...@sl... wrote: > Sorry I missed this part from code: > > * > > import > > * javax.servlet.ServletContext; > > @Context > > *private* ServletContext servletCtx; > > > > *protected* *void* setServletContext(ServletContext servletCtx) { > > *this*.servletCtx = servletCtx; > > } > > *protected* ServletContext getServletContext() { > > *return* servletCtx; > > } > > > > > > > On Fri, Aug 28, 2009 at 5:35 PM, sa...@sl... > <mailto:sa...@sl...> <sa...@sl... > <mailto:sa...@sl...>> wrote: > > Hi, > > I'm having trouble injecting ServletContext in my RESTeasy service > class when I invoke it as asynchronous i.e with an asynch=true > parameter. I've tried this with GET and POST. The call gets to the > service but since ServletContext is needed by my app it just prints > for me the error and errors out. Also, when I invoke the service > without the asynch=true it seems to processes as I expect. > > Here is what I have: > > @GET > > @Path("result/{code}") > > @Produces("application/xml") > > *public* ResultBean getResult(@PathParam("code") ErrorCodeType > errorCode, > > @QueryParam("msg") String errorMsg, > > @QueryParam("incidentId") @DefaultValue("1") Integer incidentId) > > *throws* ModuleException, HandlerException { > > debug( > > "getResult"); > > ResultBean result = > > *new* ResultBean(); > > result.setErrorCode(errorCode); > > result.setErrorMsg(errorMsg); > > debug( > > "checking servlet context"); > > *if* (getServletContext() != *null*) { > > debug( > > "servletcontext.getserverinfo"); > > debug( > > "serverinfo:" + getServletContext().getServerInfo()); > > } > > *else* { > > debug( > > "ServletContext is null"); > > } > > *return* result; > > } > > > web.xml: > > <!-- set this if you map the _Resteasy_ _servlet_ to something other > than --> > > <context-param> > > <param-name>resteasy.servlet.mapping.prefix</param-name> > > <param-value>/_handsetservice_</param-value> > > </context-param> > > <context-param> > > <param-name>resteasy.resources</param-name> > > <param-value>com.cisco.ipics.handsetserviceapi.IncidentResourceManager</param-value> > > > </context-param> > > <!-- enable the Asynchronous Job Service --> > > <context-param> > > <param-name>resteasy.async.job.service.enabled</param-name> > > <param-value>true</param-value> > > </context-param> > > <!-- The next context parameters are all optional. > > Their default values are shown as example _param_-values --> > > <!-- How many jobs results can be held in memory at once? --> > > <context-param> > > <param-name>resteasy.async.job.service.max.job.results</param-name> > > <param-value>100</param-value> > > </context-param> > > <!-- Maximum wait time on a job when a client is querying for it --> > > <context-param> > > <param-name>resteasy.async.job.service.max.wait</param-name> > > <param-value>300000</param-value> > > </context-param> > > <!-- Thread pool size of background threads that run the job --> > > <context-param> > > <param-name>resteasy.async.job.service.thread.pool.size</param-name> > > <param-value>100</param-value> > > </context-param> > > <!-- Set the base path for the Job _uris_ --> > > <context-param> > > <param-name>resteasy.async.job.service.base.path</param-name> > > <param-value>/_handsetservice_/_asynch_/jobs</param-value> > > </context-param> > > > > > > <listener> > > <listener-class>org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap</listener-class> > > > </listener> > > <servlet> > > <servlet-name>_Resteasy_</servlet-name> > > <servlet-class>org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher</servlet-class> > > > </servlet> > > <servlet-mapping> > > <servlet-name>_Resteasy_</servlet-name> > > <url-pattern>/_handsetservice_/*</url-pattern> > > </servlet-mapping> > > > > Please let me know if there is a problem with a config or if this is > a bug in the implementation. > > Regards, > > Samir > > > > ------------------------------------------------------------------------ > > ------------------------------------------------------------------------------ > Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day > trial. Simplify your report design, integration and deployment - and focus on > what you do best, core application coding. Discover what's new with > Crystal Reports now. http://p.sf.net/sfu/bobj-july > > > ------------------------------------------------------------------------ > > _______________________________________________ > Resteasy-developers mailing list > Res...@li... > https://lists.sourceforge.net/lists/listinfo/resteasy-developers -- Bill Burke JBoss, a division of Red Hat http://bill.burkecentral.com |
From: <sa...@sl...> - 2009-09-01 17:37:07
|
Hey Bill, Any word on this? Let me know if I can help! Regards, Samir On Sat, Aug 29, 2009 at 5:49 AM, Bill Burke <bb...@re...> wrote: > Probably a bug. I'll look into it. > > sa...@sl... wrote: > >> Sorry I missed this part from code: >> * >> >> import >> >> * javax.servlet.ServletContext; >> >> @Context >> >> *private* ServletContext servletCtx; >> >> >> *protected* *void* setServletContext(ServletContext servletCtx) { >> >> *this*.servletCtx = servletCtx; >> >> } >> >> *protected* ServletContext getServletContext() { >> >> *return* servletCtx; >> >> } >> >> >> >> >> On Fri, Aug 28, 2009 at 5:35 PM, sa...@sl... <mailto: >> sa...@sl...> <sa...@sl... <mailto:sa...@sl...>> >> wrote: >> >> Hi, >> >> I'm having trouble injecting ServletContext in my RESTeasy service >> class when I invoke it as asynchronous i.e with an asynch=true >> parameter. I've tried this with GET and POST. The call gets to the >> service but since ServletContext is needed by my app it just prints >> for me the error and errors out. Also, when I invoke the service >> without the asynch=true it seems to processes as I expect. >> >> Here is what I have: >> >> @GET >> >> @Path("result/{code}") >> >> @Produces("application/xml") >> >> *public* ResultBean getResult(@PathParam("code") ErrorCodeType >> errorCode, >> >> @QueryParam("msg") String errorMsg, >> >> @QueryParam("incidentId") @DefaultValue("1") Integer incidentId) >> >> *throws* ModuleException, HandlerException { >> >> debug( >> >> "getResult"); >> >> ResultBean result = >> >> *new* ResultBean(); >> >> result.setErrorCode(errorCode); >> >> result.setErrorMsg(errorMsg); >> >> debug( >> >> "checking servlet context"); >> >> *if* (getServletContext() != *null*) { >> >> debug( >> >> "servletcontext.getserverinfo"); >> >> debug( >> >> "serverinfo:" + getServletContext().getServerInfo()); >> >> } >> >> *else* { >> >> debug( >> >> "ServletContext is null"); >> >> } >> >> *return* result; >> >> } >> >> >> web.xml: >> >> <!-- set this if you map the _Resteasy_ _servlet_ to something other >> than --> >> >> <context-param> >> >> <param-name>resteasy.servlet.mapping.prefix</param-name> >> >> <param-value>/_handsetservice_</param-value> >> >> </context-param> >> >> <context-param> >> >> <param-name>resteasy.resources</param-name> >> >> >> <param-value>com.cisco.ipics.handsetserviceapi.IncidentResourceManager</param-value> >> >> >> </context-param> >> >> <!-- enable the Asynchronous Job Service --> >> >> <context-param> >> >> <param-name>resteasy.async.job.service.enabled</param-name> >> >> <param-value>true</param-value> >> >> </context-param> >> >> <!-- The next context parameters are all optional. >> >> Their default values are shown as example _param_-values --> >> >> <!-- How many jobs results can be held in memory at once? --> >> >> <context-param> >> >> <param-name>resteasy.async.job.service.max.job.results</param-name> >> >> <param-value>100</param-value> >> >> </context-param> >> >> <!-- Maximum wait time on a job when a client is querying for it --> >> >> <context-param> >> >> <param-name>resteasy.async.job.service.max.wait</param-name> >> >> <param-value>300000</param-value> >> >> </context-param> >> >> <!-- Thread pool size of background threads that run the job --> >> >> <context-param> >> >> <param-name>resteasy.async.job.service.thread.pool.size</param-name> >> >> <param-value>100</param-value> >> >> </context-param> >> >> <!-- Set the base path for the Job _uris_ --> >> >> <context-param> >> >> <param-name>resteasy.async.job.service.base.path</param-name> >> >> <param-value>/_handsetservice_/_asynch_/jobs</param-value> >> >> </context-param> >> >> >> >> <listener> >> >> >> <listener-class>org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap</listener-class> >> >> >> </listener> >> >> <servlet> >> >> <servlet-name>_Resteasy_</servlet-name> >> >> >> <servlet-class>org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher</servlet-class> >> >> >> </servlet> >> >> <servlet-mapping> >> >> <servlet-name>_Resteasy_</servlet-name> >> >> <url-pattern>/_handsetservice_/*</url-pattern> >> >> </servlet-mapping> >> >> >> Please let me know if there is a problem with a config or if this is >> a bug in the implementation. >> >> Regards, >> >> Samir >> >> >> >> ------------------------------------------------------------------------ >> >> >> ------------------------------------------------------------------------------ >> Let Crystal Reports handle the reporting - Free Crystal Reports 2008 >> 30-Day trial. Simplify your report design, integration and deployment - and >> focus on what you do best, core application coding. Discover what's new with >> Crystal Reports now. http://p.sf.net/sfu/bobj-july >> >> >> ------------------------------------------------------------------------ >> >> _______________________________________________ >> Resteasy-developers mailing list >> Res...@li... >> https://lists.sourceforge.net/lists/listinfo/resteasy-developers >> > > -- > Bill Burke > JBoss, a division of Red Hat > http://bill.burkecentral.com > |
From: Bill B. <bb...@re...> - 2009-09-04 14:56:07
|
Not yet, sry. JBoss World this week. No time for coding. sa...@sl... wrote: > Hey Bill, > > Any word on this? Let me know if I can help! > > Regards, > Samir > > > > On Sat, Aug 29, 2009 at 5:49 AM, Bill Burke <bb...@re... > <mailto:bb...@re...>> wrote: > > Probably a bug. I'll look into it. > > sa...@sl... <mailto:sa...@sl...> wrote: > > Sorry I missed this part from code: > * > > import > > * javax.servlet.ServletContext; > > @Context > > *private* ServletContext servletCtx; > > > *protected* *void* setServletContext(ServletContext servletCtx) { > > *this*.servletCtx = servletCtx; > > } > > *protected* ServletContext getServletContext() { > > *return* servletCtx; > > } > > > > > On Fri, Aug 28, 2009 at 5:35 PM, sa...@sl... > <mailto:sa...@sl...> <mailto:sa...@sl... > <mailto:sa...@sl...>> <sa...@sl... > <mailto:sa...@sl...> <mailto:sa...@sl... > <mailto:sa...@sl...>>> wrote: > > Hi, > > I'm having trouble injecting ServletContext in my RESTeasy > service > class when I invoke it as asynchronous i.e with an asynch=true > parameter. I've tried this with GET and POST. The call gets > to the > service but since ServletContext is needed by my app it just > prints > for me the error and errors out. Also, when I invoke the service > without the asynch=true it seems to processes as I expect. > > Here is what I have: > > @GET > > @Path("result/{code}") > > @Produces("application/xml") > > *public* ResultBean getResult(@PathParam("code") ErrorCodeType > errorCode, > > @QueryParam("msg") String errorMsg, > > @QueryParam("incidentId") @DefaultValue("1") Integer incidentId) > > *throws* ModuleException, HandlerException { > > debug( > > "getResult"); > > ResultBean result = > > *new* ResultBean(); > > result.setErrorCode(errorCode); > > result.setErrorMsg(errorMsg); > > debug( > > "checking servlet context"); > > *if* (getServletContext() != *null*) { > > debug( > > "servletcontext.getserverinfo"); > > debug( > > "serverinfo:" + getServletContext().getServerInfo()); > > } > > *else* { > > debug( > > "ServletContext is null"); > > } > > *return* result; > > } > > > web.xml: > > <!-- set this if you map the _Resteasy_ _servlet_ to > something other > than --> > > <context-param> > > <param-name>resteasy.servlet.mapping.prefix</param-name> > > <param-value>/_handsetservice_</param-value> > > </context-param> > > <context-param> > > <param-name>resteasy.resources</param-name> > > > <param-value>com.cisco.ipics.handsetserviceapi.IncidentResourceManager</param-value> > > > </context-param> > > <!-- enable the Asynchronous Job Service --> > > <context-param> > > <param-name>resteasy.async.job.service.enabled</param-name> > > <param-value>true</param-value> > > </context-param> > > <!-- The next context parameters are all optional. > > Their default values are shown as example _param_-values --> > > <!-- How many jobs results can be held in memory at once? --> > > <context-param> > > > <param-name>resteasy.async.job.service.max.job.results</param-name> > > <param-value>100</param-value> > > </context-param> > > <!-- Maximum wait time on a job when a client is querying for > it --> > > <context-param> > > <param-name>resteasy.async.job.service.max.wait</param-name> > > <param-value>300000</param-value> > > </context-param> > > <!-- Thread pool size of background threads that run the job --> > > <context-param> > > > <param-name>resteasy.async.job.service.thread.pool.size</param-name> > > <param-value>100</param-value> > > </context-param> > > <!-- Set the base path for the Job _uris_ --> > > <context-param> > > <param-name>resteasy.async.job.service.base.path</param-name> > > <param-value>/_handsetservice_/_asynch_/jobs</param-value> > > </context-param> > > > > <listener> > > > <listener-class>org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap</listener-class> > > > </listener> > > <servlet> > > <servlet-name>_Resteasy_</servlet-name> > > > <servlet-class>org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher</servlet-class> > > > </servlet> > > <servlet-mapping> > > <servlet-name>_Resteasy_</servlet-name> > > <url-pattern>/_handsetservice_/*</url-pattern> > > </servlet-mapping> > > > Please let me know if there is a problem with a config or if > this is > a bug in the implementation. > > Regards, > > Samir > > > > ------------------------------------------------------------------------ > > ------------------------------------------------------------------------------ > Let Crystal Reports handle the reporting - Free Crystal Reports > 2008 30-Day trial. Simplify your report design, integration and > deployment - and focus on what you do best, core application > coding. Discover what's new with Crystal Reports now. > http://p.sf.net/sfu/bobj-july > > > ------------------------------------------------------------------------ > > _______________________________________________ > Resteasy-developers mailing list > Res...@li... > <mailto:Res...@li...> > https://lists.sourceforge.net/lists/listinfo/resteasy-developers > > > -- > Bill Burke > JBoss, a division of Red Hat > http://bill.burkecentral.com > > > > ------------------------------------------------------------------------ > > ------------------------------------------------------------------------------ > Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day > trial. Simplify your report design, integration and deployment - and focus on > what you do best, core application coding. Discover what's new with > Crystal Reports now. http://p.sf.net/sfu/bobj-july > > > ------------------------------------------------------------------------ > > _______________________________________________ > Resteasy-developers mailing list > Res...@li... > https://lists.sourceforge.net/lists/listinfo/resteasy-developers -- Bill Burke JBoss, a division of Red Hat http://bill.burkecentral.com |
From: <sa...@sl...> - 2009-09-17 19:04:08
|
Just logged an JIRA for this.. https://jira.jboss.org/jira/browse/RESTEASY-307 Regards, Samir On Sat, Aug 29, 2009 at 5:49 AM, Bill Burke <bb...@re...> wrote: > Probably a bug. I'll look into it. > > sa...@sl... wrote: > >> Sorry I missed this part from code: >> * >> >> import >> >> * javax.servlet.ServletContext; >> >> @Context >> >> *private* ServletContext servletCtx; >> >> >> *protected* *void* setServletContext(ServletContext servletCtx) { >> >> *this*.servletCtx = servletCtx; >> >> } >> >> *protected* ServletContext getServletContext() { >> >> *return* servletCtx; >> >> } >> >> >> >> >> On Fri, Aug 28, 2009 at 5:35 PM, sa...@sl... <mailto: >> sa...@sl...> <sa...@sl... <mailto:sa...@sl...>> >> wrote: >> >> Hi, >> >> I'm having trouble injecting ServletContext in my RESTeasy service >> class when I invoke it as asynchronous i.e with an asynch=true >> parameter. I've tried this with GET and POST. The call gets to the >> service but since ServletContext is needed by my app it just prints >> for me the error and errors out. Also, when I invoke the service >> without the asynch=true it seems to processes as I expect. >> >> Here is what I have: >> >> @GET >> >> @Path("result/{code}") >> >> @Produces("application/xml") >> >> *public* ResultBean getResult(@PathParam("code") ErrorCodeType >> errorCode, >> >> @QueryParam("msg") String errorMsg, >> >> @QueryParam("incidentId") @DefaultValue("1") Integer incidentId) >> >> *throws* ModuleException, HandlerException { >> >> debug( >> >> "getResult"); >> >> ResultBean result = >> >> *new* ResultBean(); >> >> result.setErrorCode(errorCode); >> >> result.setErrorMsg(errorMsg); >> >> debug( >> >> "checking servlet context"); >> >> *if* (getServletContext() != *null*) { >> >> debug( >> >> "servletcontext.getserverinfo"); >> >> debug( >> >> "serverinfo:" + getServletContext().getServerInfo()); >> >> } >> >> *else* { >> >> debug( >> >> "ServletContext is null"); >> >> } >> >> *return* result; >> >> } >> >> >> web.xml: >> >> <!-- set this if you map the _Resteasy_ _servlet_ to something other >> than --> >> >> <context-param> >> >> <param-name>resteasy.servlet.mapping.prefix</param-name> >> >> <param-value>/_handsetservice_</param-value> >> >> </context-param> >> >> <context-param> >> >> <param-name>resteasy.resources</param-name> >> >> >> <param-value>com.cisco.ipics.handsetserviceapi.IncidentResourceManager</param-value> >> >> >> </context-param> >> >> <!-- enable the Asynchronous Job Service --> >> >> <context-param> >> >> <param-name>resteasy.async.job.service.enabled</param-name> >> >> <param-value>true</param-value> >> >> </context-param> >> >> <!-- The next context parameters are all optional. >> >> Their default values are shown as example _param_-values --> >> >> <!-- How many jobs results can be held in memory at once? --> >> >> <context-param> >> >> <param-name>resteasy.async.job.service.max.job.results</param-name> >> >> <param-value>100</param-value> >> >> </context-param> >> >> <!-- Maximum wait time on a job when a client is querying for it --> >> >> <context-param> >> >> <param-name>resteasy.async.job.service.max.wait</param-name> >> >> <param-value>300000</param-value> >> >> </context-param> >> >> <!-- Thread pool size of background threads that run the job --> >> >> <context-param> >> >> <param-name>resteasy.async.job.service.thread.pool.size</param-name> >> >> <param-value>100</param-value> >> >> </context-param> >> >> <!-- Set the base path for the Job _uris_ --> >> >> <context-param> >> >> <param-name>resteasy.async.job.service.base.path</param-name> >> >> <param-value>/_handsetservice_/_asynch_/jobs</param-value> >> >> </context-param> >> >> >> >> <listener> >> >> >> <listener-class>org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap</listener-class> >> >> >> </listener> >> >> <servlet> >> >> <servlet-name>_Resteasy_</servlet-name> >> >> >> <servlet-class>org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher</servlet-class> >> >> >> </servlet> >> >> <servlet-mapping> >> >> <servlet-name>_Resteasy_</servlet-name> >> >> <url-pattern>/_handsetservice_/*</url-pattern> >> >> </servlet-mapping> >> >> >> Please let me know if there is a problem with a config or if this is >> a bug in the implementation. >> >> Regards, >> >> Samir >> >> >> >> ------------------------------------------------------------------------ >> >> >> ------------------------------------------------------------------------------ >> Let Crystal Reports handle the reporting - Free Crystal Reports 2008 >> 30-Day trial. Simplify your report design, integration and deployment - and >> focus on what you do best, core application coding. Discover what's new with >> Crystal Reports now. http://p.sf.net/sfu/bobj-july >> >> >> ------------------------------------------------------------------------ >> >> _______________________________________________ >> Resteasy-developers mailing list >> Res...@li... >> https://lists.sourceforge.net/lists/listinfo/resteasy-developers >> > > -- > Bill Burke > JBoss, a division of Red Hat > http://bill.burkecentral.com > |
From: Bill B. <bb...@re...> - 2009-09-19 03:31:56
|
Ok, this is fixed in trunk. sa...@sl... wrote: > Hi, > > I'm having trouble injecting ServletContext in my RESTeasy service class > when I invoke it as asynchronous i.e with an asynch=true parameter. I've > tried this with GET and POST. The call gets to the service but since > ServletContext is needed by my app it just prints for me the error and > errors out. Also, when I invoke the service without the asynch=true it > seems to processes as I expect. > > Here is what I have: > > @GET > > @Path("result/{code}") > > @Produces("application/xml") > > *public* ResultBean getResult(@PathParam("code") ErrorCodeType errorCode, > > @QueryParam("msg") String errorMsg, > > @QueryParam("incidentId") @DefaultValue("1") Integer incidentId) > > *throws* ModuleException, HandlerException { > > debug( > > "getResult"); > > ResultBean result = > > *new* ResultBean(); > > result.setErrorCode(errorCode); > > result.setErrorMsg(errorMsg); > > debug( > > "checking servlet context"); > > *if* (getServletContext() != *null*) { > > debug( > > "servletcontext.getserverinfo"); > > debug( > > "serverinfo:" + getServletContext().getServerInfo()); > > } > > *else* { > > debug( > > "ServletContext is null"); > > } > > *return* result; > > } > > > web.xml: > > <!-- set this if you map the _Resteasy_ _servlet_ to something other > than --> > > <context-param> > > <param-name>resteasy.servlet.mapping.prefix</param-name> > > <param-value>/_handsetservice_</param-value> > > </context-param> > > <context-param> > > <param-name>resteasy.resources</param-name> > > <param-value>com.cisco.ipics.handsetserviceapi.IncidentResourceManager</param-value> > > > </context-param> > > <!-- enable the Asynchronous Job Service --> > > <context-param> > > <param-name>resteasy.async.job.service.enabled</param-name> > > <param-value>true</param-value> > > </context-param> > > <!-- The next context parameters are all optional. > > Their default values are shown as example _param_-values --> > > <!-- How many jobs results can be held in memory at once? --> > > <context-param> > > <param-name>resteasy.async.job.service.max.job.results</param-name> > > <param-value>100</param-value> > > </context-param> > > <!-- Maximum wait time on a job when a client is querying for it --> > > <context-param> > > <param-name>resteasy.async.job.service.max.wait</param-name> > > <param-value>300000</param-value> > > </context-param> > > <!-- Thread pool size of background threads that run the job --> > > <context-param> > > <param-name>resteasy.async.job.service.thread.pool.size</param-name> > > <param-value>100</param-value> > > </context-param> > > <!-- Set the base path for the Job _uris_ --> > > <context-param> > > <param-name>resteasy.async.job.service.base.path</param-name> > > <param-value>/_handsetservice_/_asynch_/jobs</param-value> > > </context-param> > > > > > > <listener> > > <listener-class>org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap</listener-class> > > > </listener> > > <servlet> > > <servlet-name>_Resteasy_</servlet-name> > > <servlet-class>org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher</servlet-class> > > > </servlet> > > <servlet-mapping> > > <servlet-name>_Resteasy_</servlet-name> > > <url-pattern>/_handsetservice_/*</url-pattern> > > </servlet-mapping> > > > > Please let me know if there is a problem with a config or if this is a > bug in the implementation. > > Regards, > > Samir > > > ------------------------------------------------------------------------ > > ------------------------------------------------------------------------------ > Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day > trial. Simplify your report design, integration and deployment - and focus on > what you do best, core application coding. Discover what's new with > Crystal Reports now. http://p.sf.net/sfu/bobj-july > > > ------------------------------------------------------------------------ > > _______________________________________________ > Resteasy-developers mailing list > Res...@li... > https://lists.sourceforge.net/lists/listinfo/resteasy-developers -- Bill Burke JBoss, a division of Red Hat http://bill.burkecentral.com |
From: Neil C. <nch...@po...> - 2009-09-21 02:40:53
|
I am using Spring and RESTEasy to build a service that returns either a plain text document or an XML document. The service passes all of its tests including tests using the mock objects that come with RESTEasy. Here is the service: @Service @Path("/documents") public class DocumentService { @GET @Path("/{id}") public String findOriginalDocumentById(@PathParam("id") int id) { ... } @GET @Path("/xml/{id}") @Produces("application/xml") public String findTaggedDocumentById(@PathParam("id") int id) { ... } } Unfortunately, when I deploy my service, I get the following: org.jboss.resteasy.core.NoMessageBodyWriterFoundFailure: Could not find MessageBodyWriter for response object of type: [Ljava.lang.StackTraceElement; of media type: */* at org.jboss.resteasy.core.ServerResponse.writeTo(ServerResponse.java:167) at org.jboss.resteasy.core.SynchronousDispatcher.writeJaxrsResponse(SynchronousDispatcher.java:403) at org.jboss.resteasy.core.SynchronousDispatcher.writeFailure(SynchronousDispatcher.java:256) at org.jboss.resteasy.core.SynchronousDispatcher.executeExceptionMapper(SynchronousDispatcher.java:231) at org.jboss.resteasy.core.SynchronousDispatcher.handleApplicationException(SynchronousDispatcher.java:245) at org.jboss.resteasy.core.SynchronousDispatcher.handleException(SynchronousDispatcher.java:159) at org.jboss.resteasy.core.SynchronousDispatcher.handleInvokerException(SynchronousDispatcher.java:138) at org.jboss.resteasy.core.SynchronousDispatcher.getResponse(SynchronousDispatcher.java:374) at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:336) at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:103) at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:114) at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:70) at javax.servlet.http.HttpServlet.service(HttpServlet.java:820) at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487) at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:362) at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181) at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:729) at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405) at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:206) at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114) at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) at org.mortbay.jetty.Server.handle(Server.java:324) at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505) at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:829) at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:513) at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211) at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380) at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395) at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:488) ---------------------------- I have another service that produces and consumes JSON that works perfectly, so I am baffled by this error. Also, while I log stack traces, I do not return stack traces in the body of the message back to the client. It is hard for me to figure out where exceptions might even occur given my thorough testing. Any insight on this is appreciated. Thanks. |
From: Lincoln B. I. <lin...@gm...> - 2009-09-21 04:55:19
|
It looks like you are trying to marshal an Exception object into XML/JSON somewhere, and JAXB doesn't know what to do with the StackTraceElement... I created my own Error object to wrap the information and pass it back to the client. Is it possible you have a custom exception mapper defined that is attempting to process the Exception object into the response? --Lincoln On Sun, 2009-09-20 at 21:40 -0500, Neil Chaudhuri wrote: > I am using Spring and RESTEasy to build a service that returns either > a plain text document or an XML document. The service passes all of > its tests including tests using the mock objects that come with > RESTEasy. Here is the service: > > @Service > @Path("/documents") > public class DocumentService { > > @GET > @Path("/{id}") > public String findOriginalDocumentById(@PathParam("id") int id) { > ... > } > > @GET > @Path("/xml/{id}") > @Produces("application/xml") > public String findTaggedDocumentById(@PathParam("id") int id) { > ... > } > } > > > Unfortunately, when I deploy my service, I get the following: > > org.jboss.resteasy.core.NoMessageBodyWriterFoundFailure: Could not > find MessageBodyWriter for response object of type: > [Ljava.lang.StackTraceElement; of media type: */* > at > org.jboss.resteasy.core.ServerResponse.writeTo(ServerResponse.java:167) > at > org.jboss.resteasy.core.SynchronousDispatcher.writeJaxrsResponse(SynchronousDispatcher.java:403) > at > org.jboss.resteasy.core.SynchronousDispatcher.writeFailure(SynchronousDispatcher.java:256) > at > org.jboss.resteasy.core.SynchronousDispatcher.executeExceptionMapper(SynchronousDispatcher.java:231) > at > org.jboss.resteasy.core.SynchronousDispatcher.handleApplicationException(SynchronousDispatcher.java:245) > at > org.jboss.resteasy.core.SynchronousDispatcher.handleException(SynchronousDispatcher.java:159) > at > org.jboss.resteasy.core.SynchronousDispatcher.handleInvokerException(SynchronousDispatcher.java:138) > at > org.jboss.resteasy.core.SynchronousDispatcher.getResponse(SynchronousDispatcher.java:374) > at > org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:336) > at > org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:103) > at > org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:114) > at > org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:70) > at > javax.servlet.http.HttpServlet.service(HttpServlet.java:820) > at > org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487) > at > org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:362) > at > org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) > at > org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181) > at > org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:729) > at > org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405) > at > org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:206) > at > org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114) > at > org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) > at org.mortbay.jetty.Server.handle(Server.java:324) > at > org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505) > at org.mortbay.jetty.HttpConnection > $RequestHandler.headerComplete(HttpConnection.java:829) > at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:513) > at > org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211) > at > org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380) > at > org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395) > at org.mortbay.thread.QueuedThreadPool > $PoolThread.run(QueuedThreadPool.java:488) > > > ---------------------------- > > I have another service that produces and consumes JSON that works > perfectly, so I am baffled by this error. Also, while I log stack > traces, I do not return stack traces in the body of the message back > to the client. It is hard for me to figure out where exceptions might > even occur given my thorough testing. > > Any insight on this is appreciated. > > Thanks. > > > ------------------------------------------------------------------------------ > Come build with us! The BlackBerry® Developer Conference in SF, CA > is the only developer event you need to attend this year. Jumpstart your > developing skills, take BlackBerry mobile applications to market and stay > ahead of the curve. Join us from November 9-12, 2009. Register now! > http://p.sf.net/sfu/devconf > _______________________________________________ Resteasy-developers mailing list Res...@li... https://lists.sourceforge.net/lists/listinfo/resteasy-developers -- Lincoln Baxter, III Co-Founder of OcpSoft Creator of: PrettyFaces: URL rewriting for JSF PrettyTime: Java elapsed timestamp formatting |
From: Neil C. <nch...@po...> - 2009-09-21 12:58:42
|
That was exactly it. I had a mapper defined long ago when I first started learning RESTEasy that attempts to process the Exception object into the response. I removed it to find an error that occurs with my connection pooling mechanism. Thanks. Neil -----Original Message----- From: Lincoln Baxter, III [mailto:lin...@gm...] Sent: Sun 9/20/2009 11:55 PM To: Neil Chaudhuri Cc: res...@li... Subject: Re: [Resteasy-developers] NoMessageBodyWriterFoundFailure When Deployed After Tests Pass It looks like you are trying to marshal an Exception object into XML/JSON somewhere, and JAXB doesn't know what to do with the StackTraceElement... I created my own Error object to wrap the information and pass it back to the client. Is it possible you have a custom exception mapper defined that is attempting to process the Exception object into the response? --Lincoln On Sun, 2009-09-20 at 21:40 -0500, Neil Chaudhuri wrote: > I am using Spring and RESTEasy to build a service that returns either > a plain text document or an XML document. The service passes all of > its tests including tests using the mock objects that come with > RESTEasy. Here is the service: > > @Service > @Path("/documents") > public class DocumentService { > > @GET > @Path("/{id}") > public String findOriginalDocumentById(@PathParam("id") int id) { > ... > } > > @GET > @Path("/xml/{id}") > @Produces("application/xml") > public String findTaggedDocumentById(@PathParam("id") int id) { > ... > } > } > > > Unfortunately, when I deploy my service, I get the following: > > org.jboss.resteasy.core.NoMessageBodyWriterFoundFailure: Could not > find MessageBodyWriter for response object of type: > [Ljava.lang.StackTraceElement; of media type: */* > at > org.jboss.resteasy.core.ServerResponse.writeTo(ServerResponse.java:167) > at > org.jboss.resteasy.core.SynchronousDispatcher.writeJaxrsResponse(SynchronousDispatcher.java:403) > at > org.jboss.resteasy.core.SynchronousDispatcher.writeFailure(SynchronousDispatcher.java:256) > at > org.jboss.resteasy.core.SynchronousDispatcher.executeExceptionMapper(SynchronousDispatcher.java:231) > at > org.jboss.resteasy.core.SynchronousDispatcher.handleApplicationException(SynchronousDispatcher.java:245) > at > org.jboss.resteasy.core.SynchronousDispatcher.handleException(SynchronousDispatcher.java:159) > at > org.jboss.resteasy.core.SynchronousDispatcher.handleInvokerException(SynchronousDispatcher.java:138) > at > org.jboss.resteasy.core.SynchronousDispatcher.getResponse(SynchronousDispatcher.java:374) > at > org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:336) > at > org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:103) > at > org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:114) > at > org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:70) > at > javax.servlet.http.HttpServlet.service(HttpServlet.java:820) > at > org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487) > at > org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:362) > at > org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) > at > org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181) > at > org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:729) > at > org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405) > at > org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:206) > at > org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114) > at > org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) > at org.mortbay.jetty.Server.handle(Server.java:324) > at > org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505) > at org.mortbay.jetty.HttpConnection > $RequestHandler.headerComplete(HttpConnection.java:829) > at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:513) > at > org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211) > at > org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380) > at > org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395) > at org.mortbay.thread.QueuedThreadPool > $PoolThread.run(QueuedThreadPool.java:488) > > > ---------------------------- > > I have another service that produces and consumes JSON that works > perfectly, so I am baffled by this error. Also, while I log stack > traces, I do not return stack traces in the body of the message back > to the client. It is hard for me to figure out where exceptions might > even occur given my thorough testing. > > Any insight on this is appreciated. > > Thanks. > > > ------------------------------------------------------------------------------ > Come build with us! The BlackBerry® Developer Conference in SF, CA > is the only developer event you need to attend this year. Jumpstart your > developing skills, take BlackBerry mobile applications to market and stay > ahead of the curve. Join us from November 9-12, 2009. Register now! > http://p.sf.net/sfu/devconf > _______________________________________________ Resteasy-developers mailing list Res...@li... https://lists.sourceforge.net/lists/listinfo/resteasy-developers -- Lincoln Baxter, III Co-Founder of OcpSoft Creator of: PrettyFaces: URL rewriting for JSF PrettyTime: Java elapsed timestamp formatting |