I think this can be achived most easily with two requests. Create a
class called ExternalPanel that displays a page that redirects to the
servlet. Like this:
public class ExternalPanel extends Panel {
public ExternalPanel(String id, String url) {
super(id);
add(new InlineFrame("include", new RedirectPage(url)));
}
}
Hope this works for you.
// Daniel Frisk
jalbum.net
On 2008-06-25, at 01:28, krisNog wrote:
Hello everyone!
I have a question regarding external servlets. I have a panel that I
would
like to stream content into from an external servlet. The overridden
onRender method I'm using for the Panel is shown below where "/
whatever" is
the servlet that is outputting some arbitrary HTML that I would like
rendered in my wicket panel. I know this isn't the "proper" way of
doing
things but I have no control over the external servlet and need to
incorporate its output into my wicket panel...
My problem.... the code below dispatches to the servlet and the
servlet
begins streaming out of sequence from the wicket panel. So the html
from the
servlet starts streaming then the wicket page starts streaming and the
servlet html isn't within my wicket panel and then I start getting
errors
(shown after the onRender method)...
Please let me know if I'm not being clear enough I'd be happy to
elaborate!
protected void onRender(MarkupStream markupStream) {
ServletWebRequest servletWebRequest = (ServletWebRequest)
getRequest();
HttpServletRequest request =
servletWebRequest.getHttpServletRequest();
WebResponse webResponse = (WebResponse) getResponse();
HttpServletResponse response =
webResponse.getHttpServletResponse();
RequestDispatcher dispatcher =
request.getRequestDispatcher("/whatever");
try {
dispatcher.include(request, response);
response.flushBuffer();
} catch (ServletException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
Error stack trace:
ERROR - WicketFilter - closing the buffer error
java.lang.IllegalStateException: getWriter can't be used after
getOutputStream was invoked
at
org
.apache
.jetspeed
.aggregator
.impl.HttpBufferedResponse.getWriter(HttpBufferedResponse.java:68)
at
javax
.servlet
.ServletResponseWrapper.getWriter(ServletResponseWrapper.java:112)
at
org.apache.wicket.protocol.http.WebResponse.write(WebResponse.java:
355)
at
org
.apache
.wicket
.protocol.http.BufferedWebResponse.close(BufferedWebResponse.java:73)
at
org.apache.wicket.protocol.http.WicketFilter.doGet(WicketFilter.java:
391)
at
org
.apache.wicket.protocol.http.WicketFilter.doFilter(WicketFilter.java:
199)
at
org
.apache
.catalina
.core
.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:
215)
at
org
.apache
.catalina
.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at
org
.apache
.catalina
.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:691)
at
org
.apache
.catalina
.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:594)
at
org
.apache
.catalina
.core.ApplicationDispatcher.include(ApplicationDispatcher.java:505)
at
org
.apache
.jetspeed
.dispatcher
.JetspeedRequestDispatcher.include(JetspeedRequestDispatcher.java:73)
at
org
.apache
.wicket
.protocol
.http.portlet.WicketPortlet.processRequest(WicketPortlet.java:519)
at
org
.apache
.wicket
.protocol.http.portlet.WicketPortlet.doView(WicketPortlet.java:416)
at javax.portlet.GenericPortlet.doDispatch(GenericPortlet.java:247)
at javax.portlet.GenericPortlet.render(GenericPortlet.java:175)
at
org
.apache
.jetspeed
.factory.JetspeedPortletInstance.render(JetspeedPortletInstance.java:
103)
at
org
.apache
.jetspeed
.container
.JetspeedContainerServlet.doGet(JetspeedContainerServlet.java:277)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at
org
.apache
.catalina
.core
.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:
269)
at
org
.apache
.catalina
.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at
org
.apache
.catalina
.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:691)
at
org
.apache
.catalina
.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:594)
at
org
.apache
.catalina
.core.ApplicationDispatcher.include(ApplicationDispatcher.java:505)
at
org
.apache
.jetspeed
.container
.invoker.ServletPortletInvoker.invoke(ServletPortletInvoker.java:273)
at
org
.apache
.jetspeed
.container
.invoker.ServletPortletInvoker.render(ServletPortletInvoker.java:140)
at
org
.apache
.pluto.PortletContainerImpl.renderPortlet(PortletContainerImpl.java:
119)
at
org
.apache
.jetspeed
.container
.JetspeedPortletContainerWrapper
.renderPortlet(JetspeedPortletContainerWrapper.java:121)
at
org
.apache
.jetspeed
.aggregator.impl.RenderingJobImpl.execute(RenderingJobImpl.java:271)
at
org
.apache
.jetspeed
.aggregator
.impl.PortletRendererImpl.renderNow(PortletRendererImpl.java:228)
at
org
.apache
.jetspeed
.aggregator
.impl.PageAggregatorImpl.aggregateAndRender(PageAggregatorImpl.java:
147)
at
org
.apache
.jetspeed
.aggregator
.impl.PageAggregatorImpl.aggregateAndRender(PageAggregatorImpl.java:
143)
at
org
.apache
.jetspeed
.aggregator.impl.PageAggregatorImpl.build(PageAggregatorImpl.java:78)
at
org
.apache
.jetspeed.aggregator.AggregatorValve.invoke(AggregatorValve.java:46)
at
org.apache.jetspeed.pipeline.JetspeedPipeline
$Invocation.invokeNext(JetspeedPipeline.java:167)
at
org
.apache
.jetspeed
.aggregator.HeaderAggregatorValve.invoke(HeaderAggregatorValve.java:
53)
at
org.apache.jetspeed.pipeline.JetspeedPipeline
$Invocation.invokeNext(JetspeedPipeline.java:167)
at
org
.apache
.jetspeed.decoration.DecorationValve.invoke(DecorationValve.java:144)
at
org.apache.jetspeed.pipeline.JetspeedPipeline
$Invocation.invokeNext(JetspeedPipeline.java:167)
at
org
.apache
.jetspeed.resource.ResourceValveImpl.invoke(ResourceValveImpl.java:
130)
at
org.apache.jetspeed.pipeline.JetspeedPipeline
$Invocation.invokeNext(JetspeedPipeline.java:167)
at
org
.apache
.jetspeed
.pipeline.valve.impl.ActionValveImpl.invoke(ActionValveImpl.java:184)
at
org.apache.jetspeed.pipeline.JetspeedPipeline
$Invocation.invokeNext(JetspeedPipeline.java:167)
at
org
.apache.jetspeed.container.ContainerValve.invoke(ContainerValve.java:
109)
at
org.apache.jetspeed.pipeline.JetspeedPipeline
$Invocation.invokeNext(JetspeedPipeline.java:167)
at
org
.apache
.jetspeed.container.PageHistoryValve.invoke(PageHistoryValve.java:108)
at
org.apache.jetspeed.pipeline.JetspeedPipeline
$Invocation.invokeNext(JetspeedPipeline.java:167)
at
org
.apache
.jetspeed
.profiler.impl.ProfilerValveImpl.invoke(ProfilerValveImpl.java:248)
at
org.apache.jetspeed.pipeline.JetspeedPipeline
$Invocation.invokeNext(JetspeedPipeline.java:167)
at
com
.bluenog
.portalext
.pipeline
.customvalve.impl.CustomValveImpl.invoke(CustomValveImpl.java:61)
at
org.apache.jetspeed.pipeline.JetspeedPipeline
$Invocation.invokeNext(JetspeedPipeline.java:167)
at
org
.apache
.jetspeed
.security
.impl.LoginValidationValveImpl.invoke(LoginValidationValveImpl.java:
159)
at
org.apache.jetspeed.pipeline.JetspeedPipeline
$Invocation.invokeNext(JetspeedPipeline.java:167)
at
org
.apache
.jetspeed
.security
.impl
.PasswordCredentialValveImpl.invoke(PasswordCredentialValveImpl.java:
150)
at
org.apache.jetspeed.pipeline.JetspeedPipeline
$Invocation.invokeNext(JetspeedPipeline.java:167)
at
org
.apache
.jetspeed
.localization
.impl.LocalizationValveImpl.invoke(LocalizationValveImpl.java:170)
at
org.apache.jetspeed.pipeline.JetspeedPipeline
$Invocation.invokeNext(JetspeedPipeline.java:167)
at
org.apache.jetspeed.security.impl.AbstractSecurityValve
$1.run(AbstractSecurityValve.java:138)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAsPrivileged(Subject.java:454)
at
org.apache.jetspeed.security.JSSubject.doAsPrivileged(JSSubject.java:
179)
at
org
.apache
.jetspeed
.security
.impl.AbstractSecurityValve.invoke(AbstractSecurityValve.java:132)
at
org.apache.jetspeed.pipeline.JetspeedPipeline
$Invocation.invokeNext(JetspeedPipeline.java:167)
at
org
.apache
.jetspeed
.container
.url.impl.PortalURLValveImpl.invoke(PortalURLValveImpl.java:67)
at
org.apache.jetspeed.pipeline.JetspeedPipeline
$Invocation.invokeNext(JetspeedPipeline.java:167)
at
org
.apache
.jetspeed
.capabilities
.impl.CapabilityValveImpl.invoke(CapabilityValveImpl.java:126)
at
org.apache.jetspeed.pipeline.JetspeedPipeline
$Invocation.invokeNext(JetspeedPipeline.java:167)
at
org
.apache
.jetspeed.pipeline.JetspeedPipeline.invoke(JetspeedPipeline.java:146)
at
org
.apache.jetspeed.engine.JetspeedEngine.service(JetspeedEngine.java:
227)
at
org
.apache.jetspeed.engine.JetspeedServlet.doGet(JetspeedServlet.java:
242)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at
org
.apache
.catalina
.core
.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:
269)
at
org
.apache
.catalina
.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at
org
.apache
.jetspeed
.engine.servlet.XXSUrlAttackFilter.doFilter(XXSUrlAttackFilter.java:
52)
at
org
.apache
.catalina
.core
.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:
215)
at
org
.apache
.catalina
.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at
org
.apache
.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:
210)
at
org
.apache
.catalina.core.StandardContextValve.invoke(StandardContextValve.java:
174)
at
org
.apache
.catalina
.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:433)
at
org
.apache
.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at
org
.apache
.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
at
org
.apache
.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:
108)
at
org
.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:
151)
at
org
.apache.coyote.http11.Http11Processor.process(Http11Processor.java:
870)
at
org.apache.coyote.http11.Http11BaseProtocol
$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:
665)
at
org
.apache
.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:
528)
at
org
.apache
.tomcat
.util
.net
.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
at
org.apache.tomcat.util.threads.ThreadPool
$ControlRunnable.run(ThreadPool.java:685)
at java.lang.Thread.run(Thread.java:595)
--
View this message in context:
http://www.nabble.com/Output-streams-from-external-servlet-tp18102120p18102120.html
Sent from the Wicket - User mailing list archive at Nabble.com.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]