You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@cocoon.apache.org by Gilles Cébélieu <gi...@ign.fr> on 2008/04/28 17:57:05 UTC
how to use the servlet service framework
Hello,
I'm using cocoon 2.2 and I want to use the servlet service framework to
wrap POST calls to external webapps from within my cocoon webapp (as
suggested in [1]).
As a beginning, I wrote a servlet that just outputs XML like this :
-----
public class WrapperServlet extends HttpServlet {
public void doPost(HttpServletRequest request, HttpServletResponse
response) throws ServletException, IOException
{
response.setContentType("text/xml") ;
response.getWriter().write("<?xml version=\"1.0\"?>\n<data>POST
!</data>") ;
}
public void doGet(HttpServletRequest request, HttpServletResponse
response) throws ServletException, IOException
{
response.setContentType("text/xml") ;
response.getWriter().write("<?xml version=\"1.0\"?>\n<data>GET
!</data>") ;
}
}
------
I mount my servlet in my cocoon webapp in my servlet-service.xml
declaration as follows (I'm just using one block) :
------
<bean id="service" class="org.apache.cocoon.sitemap.SitemapServlet">
<servlet:context mount-path="/" context-path="blockcontext:/block/">
<servlet:connections>
<entry key="servlet-wrapper" value-ref="servlet-wrapper"/>
</servlet:connections>
</servlet:context>
</bean>
<bean id="servlet-wrapper" class="WrapperServlet">
<servlet:context mount-path="/servlet-wrapper"
context-path="blockcontext:/block/"/>
</bean>
------
when I directly call the servlet, (eg : GET
http://localhost:8888/servlet-wrapper), I have the response I expect.
But I don't manage to call the servlet from within the sitemap.
The following call :
----
<map:match pattern="servlet">
<map:generate src="servlet:/servlet-wrapper"/>
<map:serialize type="xml"/>
</map:match>
----
returns me exceptions like this :
--------
2008-04-28 17:47:51.439:/:INFO: Apache Cocoon Spring Configurator
v1.0.1 is running in mode 'dev'.
javax.servlet.ServletException: org.apache.cocoon.ProcessingException:
Failed to process pipeline
at [SAXParseException] - servlet:/rsc3-servlet-wrapper:1:55
at <map:serialize type="xml"> -
file:///home/gilles/workspace/cswisoap-block/./src/main/resources/COB-INF/sitemap.xmap:158:36
at <map:generate> -
file:///home/gilles/workspace/cswisoap-block/./src/main/resources/COB-INF/sitemap.xmap:157:60
at <map:match> -
file:///home/gilles/workspace/cswisoap-block/./src/main/resources/COB-INF/sitemap.xmap:153:37
at
org.apache.cocoon.servlet.RequestProcessor.service(RequestProcessor.java:232)
at org.apache.cocoon.sitemap.SitemapServlet.service(SitemapServlet.java:64)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
at
org.apache.cocoon.servletservice.ServletServiceContext$PathDispatcher.forward(ServletServiceContext.java:567)
at
org.apache.cocoon.servletservice.ServletServiceContext$PathDispatcher.forward(ServletServiceContext.java:544)
at
org.apache.cocoon.servletservice.spring.ServletFactoryBean$ServiceInterceptor.invoke(ServletFactoryBean.java:230)
at
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:166)
at
org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
at $Proxy5.service(Unknown Source)
at
org.apache.cocoon.servletservice.DispatcherServlet.service(DispatcherServlet.java:102)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
at
org.apache.cocoon.tools.rcl.wrapper.servlet.ReloadingServlet.service(ReloadingServlet.java:89)
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487)
at
org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1093)
at
org.apache.cocoon.servlet.multipart.MultipartFilter.doFilter(MultipartFilter.java:119)
at
org.apache.cocoon.tools.rcl.wrapper.servlet.ReloadingServletFilter.doFilter(ReloadingServletFilter.java:50)
at
org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
at org.apache.cocoon.servlet.DebugFilter.doFilter(DebugFilter.java:169)
at
org.apache.cocoon.tools.rcl.wrapper.servlet.ReloadingServletFilter.doFilter(ReloadingServletFilter.java:50)
at
org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
at
org.apache.cocoon.tools.rcl.wrapper.servlet.ReloadingSpringFilter.doFilter(ReloadingSpringFilter.java:69)
at
org.apache.cocoon.tools.rcl.wrapper.servlet.ReloadingServletFilter.doFilter(ReloadingServletFilter.java:50)
at
org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:360)
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:712)
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
at
org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:211)
at
org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139)
at org.mortbay.jetty.Server.handle(Server.java:313)
at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:506)
at
org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:830)
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:514)
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:381)
at
org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:396)
at
org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:442)
Caused by: org.apache.cocoon.ProcessingException: Failed to process pipeline
at [SAXParseException] - servlet:/rsc3-servlet-wrapper:1:55
at <map:serialize type="xml"> -
file:///home/gilles/workspace/cswisoap-block/./src/main/resources/COB-INF/sitemap.xmap:158:36
at <map:generate> -
file:///home/gilles/workspace/cswisoap-block/./src/main/resources/COB-INF/sitemap.xmap:157:60
at <map:match> -
file:///home/gilles/workspace/cswisoap-block/./src/main/resources/COB-INF/sitemap.xmap:153:37
at
org.apache.cocoon.ProcessingException.throwLocated(ProcessingException.java:143)
at
org.apache.cocoon.components.pipeline.AbstractProcessingPipeline.handleException(AbstractProcessingPipeline.java:921)
at
org.apache.cocoon.components.pipeline.impl.AbstractCachingProcessingPipeline.processXMLPipeline(AbstractCachingProcessingPipeline.java:382)
at
org.apache.cocoon.components.pipeline.AbstractProcessingPipeline.process(AbstractProcessingPipeline.java:437)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at
org.apache.cocoon.core.container.spring.avalon.PoolableProxyHandler.invoke(PoolableProxyHandler.java:72)
at $Proxy8.process(Unknown Source)
at
org.apache.cocoon.components.treeprocessor.sitemap.SerializeNode.invoke(SerializeNode.java:144)
at
org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:55)
at
org.apache.cocoon.components.treeprocessor.sitemap.MatchNode.invoke(MatchNode.java:87)
at
org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:77)
at
org.apache.cocoon.components.treeprocessor.sitemap.PipelineNode.invoke(PipelineNode.java:151)
at
org.apache.cocoon.components.treeprocessor.AbstractParentProcessingNode.invokeNodes(AbstractParentProcessingNode.java:77)
at
org.apache.cocoon.components.treeprocessor.sitemap.PipelinesNode.invoke(PipelinesNode.java:93)
at
org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:240)
at
org.apache.cocoon.components.treeprocessor.ConcreteTreeProcessor.process(ConcreteTreeProcessor.java:171)
at
org.apache.cocoon.components.treeprocessor.TreeProcessor.process(TreeProcessor.java:251)
at
org.apache.cocoon.servlet.RequestProcessor.process(RequestProcessor.java:357)
at
org.apache.cocoon.servlet.RequestProcessor.service(RequestProcessor.java:171)
... 38 more
Caused by: org.xml.sax.SAXParseException: White spaces are required
between publicId and systemId.
at
org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(Unknown
Source)
at org.apache.xerces.util.ErrorHandlerWrapper.fatalError(Unknown Source)
at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source)
at org.apache.xerces.impl.XMLScanner.reportFatalError(Unknown Source)
at org.apache.xerces.impl.XMLScanner.scanExternalID(Unknown Source)
at
org.apache.xerces.impl.XMLDocumentScannerImpl.scanDoctypeDecl(Unknown
Source)
at
org.apache.xerces.impl.XMLDocumentScannerImpl$PrologDispatcher.dispatch(Unknown
Source)
at
org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown
Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
at
org.apache.cocoon.core.xml.impl.JaxpSAXParser.parse(JaxpSAXParser.java:196)
at
org.apache.cocoon.core.xml.impl.JaxpSAXParser.parse(JaxpSAXParser.java:204)
at
org.apache.cocoon.components.source.util.SourceUtil.parse(SourceUtil.java:297)
at
org.apache.cocoon.generation.FileGenerator.generate(FileGenerator.java:144)
at
org.apache.cocoon.components.pipeline.impl.AbstractCachingProcessingPipeline.processXMLPipeline(AbstractCachingProcessingPipeline.java:363)
... 57 more
-----
The question is : I am processing right ?
Thanks in advance.
Gilles
----------------------
[1] http://www.mail-archive.com/users@cocoon.apache.org/msg39592.html
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
For additional commands, e-mail: users-help@cocoon.apache.org
Re: how to use the servlet service framework
Posted by David Hummel <le...@gmail.com>.
2008/4/28 Gilles Cébélieu <gi...@ign.fr>:
>
> I'm using cocoon 2.2 and I want to use the servlet service framework to wrap
> POST calls to external webapps from within my cocoon webapp (as suggested in
> [1]).
Can someone provide an example of GET/POST to a raw servlet (not a
SitemapServlet) from within the sitemap using the servlet: protocol?
Thanks...
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
For additional commands, e-mail: users-help@cocoon.apache.org