John,
Usually portlet deployment problems come about as a result of the unique
configuration changes required within your portlet webapp by the
specific portlet-container into which you are deploying.
To illustrate these required changes, download both the
spring-portlet-sample.zip and pluto-spring-portlet-sample.zip files and
unzip them and then unpack the war files.
The first example is a generic JSR-168 webapp that is ready to be
customized for a given portlet-container. The second is the same webapp
already customized to run within Pluto.
You'll see that there are two things that have been done to the Pluto
version:
1. The web.xml file has been modified. This is necessary so that
portlet-container webapp can issue cross-context requests into the
portlet webapp. This generally involves some kind of well-defined
servlet from the portlet-container itself. In the case of Pluto, a
separate servlet is defined for each portlet, each one using the
org.apache.pluto.core.PortletServlet class. Some other
portlet-containers use a single servlet for all available portlets or
use a wrapper servlet of some kind. The point is that each
portlet-framework will have a unique way of bridging from the
portlet-container webapp to the portlet webapp you your webapp must be
modified to respond to these requests.
2. A 'portlet.tld' file has been placed into the WEB-INF/tags
directory. The contents of this file define the standard JSR-168 JSP
tags and the classes that implement them. In the case of Pluto, these
are various classes within the org.apache.pluto.tags package. The
implementation of the tags is a part of the portlet-container's
responsibilities and your webapp needs direct access to them, so this
definition is specific to the given portlet-container.
This is the basic set of changes required to deploy a portlet webapp to
work with any portlet-container webapp. However, a given
portlet-container may require additional changes, such as entire jar
files that must be placed in WEB-INF/lib or additional xml files that
must be placed into WEB-INF. They also usually require some kind of
configuration on the side of the portlet-container webapp to "register"
your portlets -- these will be entirely unique to the portlet-container.
Several portlet-containers include "automated" JSR-168 portlet webapp
deployment utilities that try to make the required changes for you. Our
experience is that these rarely work correctly. They usually provide
the necessary indicators about what changes are needed for proper
deployment, but they frequently need to be adjusted by hand to work
correctly. For example, they will sometimes assume that the Spring
Portlet ViewRendererServlet is some kind of portlet and attempt to wrap
it or modify it to enable cross-context access to it -- this will break
the servlet and Spring will be unable to render any views unless this is
corrected by hand.
The bottom line is that it is important to understand what modifications
are required to deploy a generic portlet webapp to work with a specific
portlet-container and then ensure those modifications are correctly made
to your webapp. Unfortunately, these modifications are frequently
poorly documented (if they are documented at all), especially if the
portlet-container includes a deployment utility.
All that said, since Jetspeed 2 uses Pluto, you should be able to use
the pluto-spring-portlet-sample.zip with little or no additional
modifications. Be sure NOT to run this webapp through the automated
deployment process -- it has already been modified for use with Pluto
and running it through deployment again is likely to mangle it quite a bit.
Let me know how your deployment efforts progress.
John Lewis
Daly, JohnG wrote:
Hi,
I have managed to install jetspeed and get it running with Tomcat and have
got a simple hello world portlet up and running. However I am now trying to
get the spring-portlet-sample.zip
</confluence/spring/download/attachments/10/spring-portlet-sample.zip>
sample from
http://opensource2.atlassian.com/confluence/spring/pages/viewpageattachments
.action?pageId=10
<http://opensource2.atlassian.com/confluence/spring/pages/viewpageattachment
s.action?pageId=10> deployed.
I am getting a lot of errors. All I did was add a fragment to the
default-page.psml file and drop the war file itself into the the deploy
folder. This example works if I just deploy it on pluto.
The following is the error I get.
20-Sep-2005 16:45:50 org.apache.commons.digester.Digester error
SEVERE: Parse Error at line 6 column 17: Document root element "taglib",
must match DOCTYPE root "null".
org.xml.sax.SAXParseException: Document root element "taglib", must match
DOCTYPE root "null".
at
org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(Unknown
Source)
at org.apache.xerces.util.ErrorHandlerWrapper.error(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.dtd.XMLDTDValidator.rootElementSpecified(Unknown
Source)
at
org.apache.xerces.impl.dtd.XMLDTDValidator.handleStartElement(Unknown
Source)
at org.apache.xerces.impl.dtd.XMLDTDValidator.startElement(Unknown
Source)
at
org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanStartElement(Unkno
wn Source)
at
org.apache.xerces.impl.XMLDocumentScannerImpl$ContentDispatcher.scanRootElem
entHook(Unknown Source)
at
org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatc
her.dispatch(Unknown Sour
at
org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown
Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown
Source)
at org.apache.xerces.parsers.DTDConfiguration.parse(Unknown Source)
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
at org.apache.commons.digester.Digester.parse(Digester.java:1567)
at
org.apache.catalina.startup.ContextConfig.tldScanStream(ContextConfig.java:9
28)
at
org.apache.catalina.startup.ContextConfig.tldScanTld(ContextConfig.java:959)
at
org.apache.catalina.startup.ContextConfig.tldScan(ContextConfig.java:811)
at
org.apache.catalina.startup.ContextConfig.start(ContextConfig.java:587)
at
org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:
181)
at
org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSuppor
t.java:119)
at
org.apache.catalina.core.StandardContext.start(StandardContext.java:3523)
at
org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:7
74)
at
org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:760)
at
org.apache.catalina.core.StandardHost.addChild(StandardHost.java:548)
at
org.apache.catalina.core.StandardHostDeployer.install(StandardHostDeployer.j
ava:260)
at
org.apache.catalina.core.StandardHost.install(StandardHost.java:741)
at
org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:512
)
at
org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:354)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:671)
at
org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)
at
org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSuppor
t.java:119)
at
org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1149)
at
org.apache.catalina.core.StandardHost.start(StandardHost.java:707)
at
org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1141)
at
org.apache.catalina.core.StandardEngine.start(StandardEngine.java:316)
at
org.apache.catalina.core.StandardService.start(StandardService.java:450)
at
org.apache.catalina.core.StandardServer.start(StandardServer.java:2143)
at org.apache.catalina.startup.Catalina.start(Catalina.java:463)
at org.apache.catalina.startup.Catalina.execute(Catalina.java:350)
at org.apache.catalina.startup.Catalina.process(Catalina.java:129)
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.catalina.startup.Bootstrap.main(Bootstrap.java:156)
20-Sep-2005 16:45:50 org.apache.commons.digester.Digester error
SEVERE: Parse Error at line 6 column 17: Document is invalid: no grammar
found.
org.xml.sax.SAXParseException: Document is invalid: no grammar found.
at
org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(Unknown
Source)
at org.apache.xerces.util.ErrorHandlerWrapper.error(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.dtd.XMLDTDValidator.handleStartElement(Unknown
Source)
at org.apache.xerces.impl.dtd.XMLDTDValidator.startElement(Unknown
Source)
at
org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanStartElement(Unkno
wn Source)
at
org.apache.xerces.impl.XMLDocumentScannerImpl$ContentDispatcher.scanRootElem
entHook(Unknown Source)
at
org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatc
her.dispatch(Unknown Sour
at
org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown
Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown
Source)
at org.apache.xerces.parsers.DTDConfiguration.parse(Unknown Source)
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
at org.apache.commons.digester.Digester.parse(Digester.java:1567)
at
org.apache.catalina.startup.ContextConfig.tldScanStream(ContextConfig.java:9
28)
at
org.apache.catalina.startup.ContextConfig.tldScanTld(ContextConfig.java:959)
at
org.apache.catalina.startup.ContextConfig.tldScan(ContextConfig.java:811)
at
org.apache.catalina.startup.ContextConfig.start(ContextConfig.java:587)
at
org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:
181)
at
org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSuppor
t.java:119)
at
org.apache.catalina.core.StandardContext.start(StandardContext.java:3523)
at
org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:7
74)
at
org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:760)
at
org.apache.catalina.core.StandardHost.addChild(StandardHost.java:548)
at
org.apache.catalina.core.StandardHostDeployer.install(StandardHostDeployer.j
ava:260)
at
org.apache.catalina.core.StandardHost.install(StandardHost.java:741)
at
org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:512
)
at
org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:354)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:671)
at
org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)
at
org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSuppor
t.java:119)
at
org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1149)
at
org.apache.catalina.core.StandardHost.start(StandardHost.java:707)
at
org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1141)
at
org.apache.catalina.core.StandardEngine.start(StandardEngine.java:316)
at
org.apache.catalina.core.StandardService.start(StandardService.java:450)
at
org.apache.catalina.core.StandardServer.start(StandardServer.java:2143)
at org.apache.catalina.startup.Catalina.start(Catalina.java:463)
at org.apache.catalina.startup.Catalina.execute(Catalina.java:350)
at org.apache.catalina.startup.Catalina.process(Catalina.java:129)
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.catalina.startup.Bootstrap.main(Bootstrap.java:156)
20-Sep-2005 16:45:50 org.apache.commons.digester.Digester error
SEVERE: Parse Error at line 6 column 19: Document root element "taglib",
must match DOCTYPE root "null".
org.xml.sax.SAXParseException: Document root element "taglib", must match
DOCTYPE root "null".
at
org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(Unknown
Source)
at org.apache.xerces.util.ErrorHandlerWrapper.error(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.dtd.XMLDTDValidator.rootElementSpecified(Unknown
Source)
at
org.apache.xerces.impl.dtd.XMLDTDValidator.handleStartElement(Unknown
Source)
at org.apache.xerces.impl.dtd.XMLDTDValidator.startElement(Unknown
Source)
at
org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanStartElement(Unkno
wn Source)
at
org.apache.xerces.impl.XMLDocumentScannerImpl$ContentDispatcher.scanRootElem
entHook(Unknown Source)
at
org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatc
her.dispatch(Unknown Sour
at
org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown
Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown
Source)
at org.apache.xerces.parsers.DTDConfiguration.parse(Unknown Source)
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
at org.apache.commons.digester.Digester.parse(Digester.java:1567)
at
org.apache.catalina.startup.ContextConfig.tldScanStream(ContextConfig.java:9
28)
at
org.apache.catalina.startup.ContextConfig.tldScanTld(ContextConfig.java:959)
at
org.apache.catalina.startup.ContextConfig.tldScan(ContextConfig.java:811)
at
org.apache.catalina.startup.ContextConfig.start(ContextConfig.java:587)
at
org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:
181)
at
org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSuppor
t.java:119)
at
org.apache.catalina.core.StandardContext.start(StandardContext.java:3523)
at
org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:7
74)
at
org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:760)
at
org.apache.catalina.core.StandardHost.addChild(StandardHost.java:548)
at
org.apache.catalina.core.StandardHostDeployer.install(StandardHostDeployer.j
ava:260)
at
org.apache.catalina.core.StandardHost.install(StandardHost.java:741)
at
org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:512
)
at
org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:354)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:671)
at
org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)
at
org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSuppor
t.java:119)
at
org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1149)
at
org.apache.catalina.core.StandardHost.start(StandardHost.java:707)
at
org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1141)
at
org.apache.catalina.core.StandardEngine.start(StandardEngine.java:316)
at
org.apache.catalina.core.StandardService.start(StandardService.java:450)
at
org.apache.catalina.core.StandardServer.start(StandardServer.java:2143)
at org.apache.catalina.startup.Catalina.start(Catalina.java:463)
at org.apache.catalina.startup.Catalina.execute(Catalina.java:350)
at org.apache.catalina.startup.Catalina.process(Catalina.java:129)
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)
The errors I receive are the following:
Regards,
John
John Daly
Fisc-Ireland Ltd. / Fidelity Investments
*Tel internal: 8-737-7469
*Tel External: +353-(0)91-74-7469
*E-mail: [EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>
FISC Ireland Ltd., registered in Ireland no. 245656. Registered office:
Hardwicke House, Upper Hatch Street, Dublin 2.
Any comments or statements made are not necessarily those of Fidelity
Investments, its subsidiaries or affiliates.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]