Kenneth,
I made one change to the geronimo-web.xml file that you sent me. Also,
I deployed to Geronimo/Tomcat rather than Jetty.
I have attached the edited web.xml and geronimo-web.xml files.
The one thing that I changed was to remove the virtual host line from
the geronimo-web.xml. You should be able to set up virtual hosts. I
haven't ever done so myself - but there are pages on the wiki that
describe how to do it.
Here are the pages for version 2.1.
Jetty:
http://cwiki.apache.org/GMOxDOC21/configuring-virtual-hosts-in-geronimo-jetty.html
Tomcat:
http://cwiki.apache.org/GMOxDOC21/configuring-virtual-hosts-in-geronimo-tomcat.html
I did get some deployment messages:
<snip of geronimo.log>
21:14:51,081 WARN [JspModuleBuilderExtension] Invalid transformed taglib
org.apache.xmlbeans.XmlException: Invalid deployment descriptor: errors:
jar:file:/opt/geronimo-tomcat6-javaee5-2.1.1/repository/default/pebble/2.3/pebble-2.3.war/WEB-INF/lib/pebble-2.3.jar!/META-INF/pebble.tld:161:7:
error: cvc-enumeration-valid: string value 'PAGE' is not a valid
enumeration value for variable-scopeType in namespace
http://java.sun.com/xml/ns/javaee
Descriptor:
<taglib xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd"
version="2.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee">
<description>The core Pebble tags.</description>
<tlib-version>2.0</tlib-version>
<short-name>pebble</short-name>
<uri>http://pebble.sourceforge.net/pebble</uri>
<tag>
<description>Builds a calendar control for use on the blog
pages.</description>
<name>calendar</name>
<tag-class>net.sourceforge.pebble.web.tagext.CalendarTag</tag-class>
<body-content>empty</body-content>
</tag>
<tag>
<description>Creates a HTML select control based upon a collection
of objects.</description>
<name>select</name>
<tag-class>net.sourceforge.pebble.web.tagext.SelectTag</tag-class>
<body-content>empty</body-content>
<attribute>
<name>name</name>
<required>true</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
<attribute>
<name>size</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
<attribute>
<name>multiple</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
<attribute>
<name>label</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
<attribute>
<name>value</name>
<required>false</required>
<rtexprvalue>false</rtexprvalue>
</attribute>
<attribute>
<name>items</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
<type>java.lang.Object</type>
</attribute>
<attribute>
<name>selected</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
<type>java.lang.Object</type>
</attribute>
</tag>
<tag>
<description>Includes the body content only if the current user is
a blog admin user.</description>
<name>isBlogAdmin</name>
<tag-class>net.sourceforge.pebble.web.tagext.IsBlogAdminTag</tag-class>
<body-content>JSP</body-content>
</tag>
<tag>
<description>Includes the body content only if the current user is
a blog admin or blog owner user.</description>
<name>isBlogAdminOrBlogOwner</name>
<tag-class>net.sourceforge.pebble.web.tagext.IsBlogAdminOrBlogOwnerTag</tag-class>
<body-content>JSP</body-content>
</tag>
<tag>
<description>Includes the body content only if the current user is
a blog owner of the current blog.</description>
<name>isBlogOwner</name>
<tag-class>net.sourceforge.pebble.web.tagext.IsBlogOwnerTag</tag-class>
<body-content>JSP</body-content>
</tag>
<tag>
<description>Includes the body content only if the current user is
a blog publisher of the current blog.</description>
<name>isBlogPublisher</name>
<tag-class>net.sourceforge.pebble.web.tagext.IsBlogPublisherTag</tag-class>
<body-content>JSP</body-content>
</tag>
<tag>
<description>Includes the body content only if the current user is
a blog contributor of the current blog.</description>
<name>isBlogContributor</name>
<tag-class>net.sourceforge.pebble.web.tagext.IsBlogContributorTag</tag-class>
<body-content>JSP</body-content>
</tag>
<tag>
<description>Includes the body content only if the current user
authorised for the current blog.</description>
<name>isAuthorisedForBlog</name>
<tag-class>net.sourceforge.pebble.web.tagext.IsAuthorisedForBlogTag</tag-class>
<body-content>JSP</body-content>
</tag>
<tag>
<description>Includes the body content only if the current user has
been authenticated.</description>
<name>isAuthenticated</name>
<tag-class>net.sourceforge.pebble.web.tagext.IsAuthenticatedTag</tag-class>
<body-content>JSP</body-content>
</tag>
<tag>
<description>Includes the body content only if the current user has
not been authenticated.</description>
<name>isNotAuthenticated</name>
<tag-class>net.sourceforge.pebble.web.tagext.IsNotAuthenticatedTag</tag-class>
<body-content>JSP</body-content>
</tag>
<tag>
<description>Exposes a variable containing entries from the
specified feed.</description>
<name>getFeed</name>
<tag-class>net.sourceforge.pebble.web.tagext.NewsFeedReaderTag</tag-class>
<body-content>empty</body-content>
<variable>
<name-given>feedEntries</name-given>
<variable-class>java.util.List</variable-class>
<scope>PAGE</scope>
</variable>
<attribute>
<name>url</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
<type>java.lang.String</type>
</attribute>
</tag>
</taglib>
at
org.apache.geronimo.deployment.xmlbeans.XmlBeansUtil.validateDD(XmlBeansUtil.java:187)
at
org.apache.geronimo.jasper.deployment.JspModuleBuilderExtension.convertToTaglibSchema(JspModuleBuilderExtension.java:674)
at
org.apache.geronimo.jasper.deployment.JspModuleBuilderExtension.parseTldFile(JspModuleBuilderExtension.java:439)
at
org.apache.geronimo.jasper.deployment.JspModuleBuilderExtension.getListenerClasses(JspModuleBuilderExtension.java:424)
at
org.apache.geronimo.jasper.deployment.JspModuleBuilderExtension.createJspClassFinder(JspModuleBuilderExtension.java:180)
at
org.apache.geronimo.jasper.deployment.JspModuleBuilderExtension.addGBeans(JspModuleBuilderExtension.java:149)
at
org.apache.geronimo.tomcat.deployment.TomcatModuleBuilder.addGBeans(TomcatModuleBuilder.java:497)
at
org.apache.geronimo.j2ee.deployment.SwitchingModuleBuilder.addGBeans(SwitchingModuleBuilder.java:165)
at
org.apache.geronimo.j2ee.deployment.EARConfigBuilder.buildConfiguration(EARConfigBuilder.java:647)
at
org.apache.geronimo.deployment.Deployer.deploy(Deployer.java:254)
at
org.apache.geronimo.deployment.Deployer.deploy(Deployer.java:133)
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.geronimo.gbean.runtime.ReflectionMethodInvoker.invoke(ReflectionMethodInvoker.java:34)
at
org.apache.geronimo.gbean.runtime.GBeanOperation.invoke(GBeanOperation.java:124)
at
org.apache.geronimo.gbean.runtime.GBeanInstance.invoke(GBeanInstance.java:867)
at
org.apache.geronimo.kernel.basic.BasicKernel.invoke(BasicKernel.java:239)
at
org.apache.geronimo.deployment.plugin.local.AbstractDeployCommand.doDeploy(AbstractDeployCommand.java:116)
at
org.apache.geronimo.deployment.plugin.local.DistributeCommand.run(DistributeCommand.java:61)
at java.lang.Thread.run(Thread.java:595)
21:14:53,134 WARN [DefaultSecurityRealm] *** Creating default user
(username/password)
21:14:53,134 WARN [DefaultSecurityRealm] *** Don't forget to delete
this user in a production deployment!
21:14:53,337 WARN [AbstractSecurityInterceptor] Could not validate
configuration attributes as the MethodDefinitionSource did not return a
ConfigAttributeDefinition Iterator
</snip of geronimo.log>
But I was able to access the blog at http://localhost:8080/pebble
Hopefully the virtual hosts entries in the wiki will help you get that
last part set up.
Jay
Kenneth P. Turvey wrote:
On Tue, 15 Apr 2008 09:19:19 -0500, Jay D. McHugh wrote:
Kenneth,
This is my real address - So, you can go ahead and send me that war
file.
This may or may not work. I'm reading this mailing list on gmane, an
NNTP server. It obfuscates the email addresses of poster. I think it
will probably forward my email to you, but I can't say so for a fact. If
you don't receive the email within an hour of this posting, please send a
quick note to the email address below so I can grab your real email
address and try again.
Thanks.
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>Pebble</display-name>
<description>My blog, powered by Pebble</description>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/applicationContext-acegi-security.xml
/WEB-INF/applicationContext-xmlrpc.xml
/WEB-INF/applicationContext-pebble.xml
</param-value>
</context-param>
<jsp-config>
<jsp-property-group>
<url-pattern>*.jsp</url-pattern>
<scripting-invalid>true</scripting-invalid>
<include-prelude>/WEB-INF/fragments/prelude.jspf</include-prelude>
<include-coda>/WEB-INF/fragments/coda.jspf</include-coda>
</jsp-property-group>
<jsp-property-group>
<url-pattern>*.xml</url-pattern>
<scripting-invalid>true</scripting-invalid>
<include-prelude>/WEB-INF/xml/prelude.jspf</include-prelude>
<include-prelude>/WEB-INF/xml/coda.jspf</include-prelude>
</jsp-property-group>
<jsp-property-group>
<url-pattern>*.txt</url-pattern>
<scripting-invalid>true</scripting-invalid>
</jsp-property-group>
</jsp-config>
<filter>
<filter-name>BlogLookupFilter</filter-name>
<filter-class>net.sourceforge.pebble.web.filter.BlogLookupFilter</filter-class>
</filter>
<filter>
<filter-name>TransformingFilter</filter-name>
<filter-class>net.sourceforge.pebble.web.filter.TransformingFilter</filter-class>
</filter>
<filter>
<filter-name>Acegi Filter Chain Proxy</filter-name>
<filter-class>org.acegisecurity.util.FilterToBeanProxy</filter-class>
<init-param>
<param-name>targetClass</param-name>
<param-value>org.acegisecurity.util.FilterChainProxy</param-value>
</init-param>
</filter>
<filter>
<filter-name>PreProcessingFilter</filter-name>
<filter-class>net.sourceforge.pebble.web.filter.PreProcessingFilter</filter-class>
</filter>
<filter>
<filter-name>LoggingFilter</filter-name>
<filter-class>net.sourceforge.pebble.web.filter.LoggingFilter</filter-class>
</filter>
<filter>
<filter-name>DispatchingFilter</filter-name>
<filter-class>net.sourceforge.pebble.web.filter.DispatchingFilter</filter-class>
</filter>
<filter>
<filter-name>GZIPFilter</filter-name>
<filter-class>net.sourceforge.pebble.web.filter.GZIPFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>GZIPFilter</filter-name>
<url-pattern>*.html</url-pattern>
<dispatcher>REQUEST</dispatcher>
</filter-mapping>
<filter-mapping>
<filter-name>GZIPFilter</filter-name>
<url-pattern>*.js</url-pattern>
<dispatcher>REQUEST</dispatcher>
</filter-mapping>
<filter-mapping>
<filter-name>GZIPFilter</filter-name>
<url-pattern>*.css</url-pattern>
<dispatcher>REQUEST</dispatcher>
</filter-mapping>
<filter-mapping>
<filter-name>BlogLookupFilter</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
</filter-mapping>
<filter-mapping>
<filter-name>TransformingFilter</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
</filter-mapping>
<filter-mapping>
<filter-name>Acegi Filter Chain Proxy</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
</filter-mapping>
<filter-mapping>
<filter-name>PreProcessingFilter</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
</filter-mapping>
<filter-mapping>
<filter-name>LoggingFilter</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
</filter-mapping>
<filter-mapping>
<filter-name>DispatchingFilter</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
</filter-mapping>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<listener>
<listener-class>net.sourceforge.pebble.web.listener.PebbleContextListener</listener-class>
</listener>
<listener>
<listener-class>net.sourceforge.pebble.aggregator.NewsFeedContextListener</listener-class>
</listener>
<servlet>
<servlet-name>HttpController</servlet-name>
<servlet-class>net.sourceforge.pebble.web.controller.HttpController</servlet-class>
<init-param>
<param-name>actions</param-name>
<param-value>action.properties</param-value>
</init-param>
<init-param>
<param-name>actionExtension</param-name>
<param-value>.action</param-value>
</init-param>
</servlet>
<servlet>
<servlet-name>SecureController</servlet-name>
<servlet-class>net.sourceforge.pebble.web.controller.HttpController</servlet-class>
<init-param>
<param-name>actions</param-name>
<param-value>secure-action.properties</param-value>
</init-param>
<init-param>
<param-name>actionExtension</param-name>
<param-value>.secureaction</param-value>
</init-param>
</servlet>
<servlet>
<servlet-name>XmlRpcController</servlet-name>
<servlet-class>net.sourceforge.pebble.web.controller.XmlRpcController</servlet-class>
</servlet>
<servlet>
<servlet-name>index.jsp</servlet-name>
<jsp-file>/index.jsp</jsp-file>
</servlet>
<servlet>
<servlet-name>jcaptcha</servlet-name>
<servlet-class>net.sourceforge.pebble.confirmation.ImageCaptchaServlet</servlet-class>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet>
<servlet-name>dwr-invoker</servlet-name>
<servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>allowGetForSafariButMakeForgeryEasier</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dwr-invoker</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>HttpController</servlet-name>
<url-pattern>*.action</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>SecureController</servlet-name>
<url-pattern>*.secureaction</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>XmlRpcController</servlet-name>
<url-pattern>/xmlrpc/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>index.jsp</servlet-name>
<url-pattern>/index.html</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>jcaptcha</servlet-name>
<url-pattern>/jcaptcha</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>60</session-timeout>
</session-config>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
<!--
<error-page>
<error-code>401</error-code>
<location>/401.action</location>
</error-page>
-->
<error-page>
<error-code>403</error-code>
<location>/403.action</location>
</error-page>
<error-page>
<error-code>404</error-code>
<location>/404.action</location>
</error-page>
<error-page>
<error-code>500</error-code>
<location>/error.action</location>
</error-page>
<error-page>
<exception-type>java.lang.Exception</exception-type>
<location>/error.action</location>
</error-page>
<!-- uncomment this if you would like to use a JNDI-based JavaMail Session
<resource-ref>
<description>
Resource reference to a factory for javax.mail.Session
instances that may be used for sending e-mail notifications.
</description>
<res-ref-name>mail/Session</res-ref-name>
<res-type>javax.mail.Session</res-type>
<res-auth>Container</res-auth>
</resource-ref>
-->
</web-app>
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://geronimo.apache.org/xml/ns/j2ee/web-1.2">
<environment>
<moduleId>
<groupId>default</groupId>
<artifactId>pebble</artifactId>
<version>2.3</version>
<type>war</type>
</moduleId>
</environment>
<context-root>/pebble</context-root>
<!--
<virtual-host>kt.squeakydolphin.com</virtual-host>
-->
</web-app>