The parameter to Viewable is not an URL, but a relative path. If you give a
name, such as "foo", it will look for pages named
<package-as-path>/<Classname>/foo.jsp (the actual lookup is a bit more
sophisticated than that, actually, but google around, or turn on more
verbose logging to see what paths it searches to find your JSP file).
So, if your resource class is com.example.Resource, and you return new
Viewable("foo") name your JSP file /com/example/Resource/foo.jsp. This is
relative your web root.
2011/4/15 Arthur Yeo <artyyeo_at_gmail.com>
> OK, I found something in some older threads and looks looks like the way to
> do this is to return a Viewable object.
>
> I changed the server code to do this now:
>
> return new Viewable("http://localhost:8080/MyPage.jsp", MyObject);
>
> And, the JSP page has this code embedded to show what's coming thru:
> <h1><% out.println ("New data==" + (MyObject)
> request.getAttribute("someField")); %></h1>
>
> Questions:
>
> 1. Do I need to declare @Produces ("application/html") or is it
> something else since I am returning a Viewable object?
> 2. What's causing this run time error?
>
>
> Here's the run-time error:
>
> PWC1406: Servlet.service() for servlet ServletAdaptor threw exception
> java.io.IOException: The template name, http://localhost:8080/MyPage.jsp,
> could not be resolved to a fully qualified template name at
> com.sun.jersey.server.impl.template.ViewableMessageBodyWriter.writeTo(ViewableMessageBodyWriter.java:74)
> at
> com.sun.jersey.server.impl.template.ViewableMessageBodyWriter.writeTo(ViewableMessageBodyWriter.java:58)
> at
> com.sun.jersey.spi.container.ContainerResponse.write(ContainerResponse.java:289)
> at
> com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1029)
> at
> com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:941)
> at
> com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:932)
> at
> com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:384)
> at
> com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:451)
> at
> com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:632)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:847) at
> org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1523)
> at
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:279)
> at
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:188)
> at
> org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:641)
> at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:97) at
> com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:85)
> at
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:185)
> at
> org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:325)
> at
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:226)
> at
> com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:165)
> at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:791)
> at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:693) at
> com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:954) at
> com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:170)
> at
> com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:135)
> at
> com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:102)
> at
> com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:88)
> at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:76)
> at
> com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:53)
> at
> com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:57)
> at com.sun.grizzly.ContextTask.run(ContextTask.java:69) at
> com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:330)
> at
> com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:309)
> at java.lang.Thread.run(Thread.java:662)
>
>
> On Thu, Apr 14, 2011 at 2:55 PM, Arthur Yeo <artyyeo_at_gmail.com> wrote:
>
>> At the end of a servicing a Jersey request, I need to do these 2 things:
>>
>> 1. redirect it to a JSP page
>> 2. and include a few pieces of data wrapped in an object for that JSP
>> page to use
>>
>> What are the best practice approaches to implementing this?
>>
>> Currently, I am doing this ...
>>
>> ---------------
>> ResponseBuilder builder = Response.seeOther(URI.create("
>> http://localhost:8080/My.jsp")) );
>> builder.entity(MyObject);
>> if (EverythingIsSunny == 1) {
>> return builder.build();
>> } else {
>> return Response.seeOther(URI.create("
>> http://localhost:8080/SomeErrorHandlingPage.html")).build();
>> }
>> ------------------
>>
>> When I ran it, I get a runtime exception that looks like the one below.
>> Any recommendations?
>>
>> javax.ws.rs.WebApplicationException
>> at com.sun.jersey.spi.container.ContainerResponse.write(ContainerResponse.java:268)
>> at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1029)
>> at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:941)
>> at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:932)
>> at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:384)
>> at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:451)
>> at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:632)
>> at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
>> at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1523)
>> at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:279)
>> at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:188)
>> at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:641)
>> at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:97)
>> at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:85)
>> at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:185)
>> at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:325)
>> at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:226)
>> at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:165)
>> at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:791)
>> at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:693)
>> at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:954)
>> at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:170)
>> at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:135)
>> at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:102)
>> at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:88)
>> at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:76)
>> at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:53)
>> at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:57)
>> at com.sun.grizzly.ContextTask.run(ContextTask.java:69)
>> at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:330)
>> at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:309)
>> at java.lang.Thread.run(Thread.java:662)
>>
>>
>> --
>> Arthur Y.
>>
>
>
>
> --
> Arthur Y.
>