-
1. Re: Booking example, Tomcat, EJB3 and thou...
fernando_jmt Mar 5, 2007 1:22 PM (in response to mlh496)I have a Seam application running in tomcat 5.1.17.
In order to get Seam running in Tomcat the key is to deploy EJB Embedded microcontainer into Tomcat.
If you can see in the booking example, when the application (.war) is deployed, you can have a look the mc-conf.jar (among other ejb jars), which is the key in order to have EJB applications deployed in Tomcat. -
2. Re: Booking example, Tomcat, EJB3 and thou...
mlh496 Mar 5, 2007 1:45 PM (in response to mlh496)If my understanding is correct, the mc-conf.jar file consists of the files int the
jboss-seam-1.2.0/embedded-ejb/conf
directory. This is shared across all Seam example applications. If this is the case, then shouldn't all examples be EJB3 enabled?
I did compare the contents of my mc-conf.jar file with the one in the Seam examples and could not see any difference. This led me to think there was something in the Booking/resources directory that was different.
In short, what I'm after is a simple app that uses EJB3 & MySql and can be deployed on both JBoss and Tomcat. I develop using JBoss, but unfortunately have no control over my production environment which uses Tomcat. I have not problem developing with JBoss, but have yet to enable the app to run on Tomcat.
-Michael -
3. Re: Booking example, Tomcat, EJB3 and thou...
apushadow Mar 5, 2007 4:58 PM (in response to mlh496)I needed to include the contents of both booking\microcontainer and booking\embedded-ejb in order to get the booking example working on Tomcat. Maybe both sets of jars and config files in those directories are needed, or maybe I'm just a n00b. :-)
What's the error or errant behavior you're getting? As a reminder, if there's no good error message in your "stdout" log, check the "catalina" and "jakarta_service" ones as well. -
4. Re: Booking example, Tomcat, EJB3 and thou...
mlh496 Mar 5, 2007 7:23 PM (in response to mlh496)I am able to get the Seam examples to run on Tomcat with no problem. Where I run into trouble is when I do this:
1. Create a new ear application using the seam gen script
[The application runs against MySql.]
2. Generate the entities for the existing tables.
3. Add a new target to the build.xml script to deploy to Tomcat.
I create the mc-conf.jar file, modify the components.xml, etc. to match the Seam examples. However, it refuses to work on Tomcat.
I'm missing something fundamental here and could sure use some help. Maybe I should recreate my app to generate a WAR instead of an EAR? Is anyone else having trouble porting seam-gen created apps to Tomcat? Has anyone successfully modified the Seam generated build script to deploy to Tomcat?
-Michael -
5. Re: Booking example, Tomcat, EJB3 and thou...
gavin.king Mar 5, 2007 11:48 PM (in response to mlh496)However, it refuses to work on Tomcat.
We cant help unless you show us Tomcat logs with exception stack traces. -
6. Re: Booking example, Tomcat, EJB3 and thou...
mlh496 Mar 6, 2007 12:17 AM (in response to mlh496)My apologies for not providing the log info.
Here is where the trouble begins...21:13:12,687 FATAL [Ejb3Configuration] hibernate.cfg.xmlO-:-Ofalse 21:13:12,687 FATAL [Ejb3Configuration] import.sqlO-:-Ofalse 21:13:12,687 FATAL [Ejb3Configuration] messages_en.propertiesO-:-Ofalse 21:13:12,687 FATAL [Ejb3Configuration] META-INF/jboss-beans.xmlO-:-Ofalse 21:13:12,687 FATAL [Ejb3Configuration] META-INF/persistence.xmlO-:-Ofalse 21:13:12,687 FATAL [Ejb3Configuration] seam.propertiesO-:-Ofalse 21:13:12,687 FATAL [Ejb3Configuration] security.drlO-:-Ofalse 21:13:12,687 WARN [Ejb3Configuration] Overriding hibernate.transaction.factory_class is dangerous, this might break the EJB3 specification implementation 21:13:12,750 INFO [NamingHelper] JNDI InitialContext properties:{java.naming.factory.initial=org.jnp.interfaces.LocalOnlyContextFactory, java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces} 21:13:12,765 ERROR [NamingHelper] Could not obtain initial context javax.naming.NamingException: Local server is not initialized at org.jnp.interfaces.LocalOnlyContextFactory.getInitialContext(LocalOnlyContextFactory.java:45) at javax.naming.spi.NamingManager.getInitialContext(Unknown Source) at javax.naming.InitialContext.getDefaultInitCtx(Unknown Source)
-Michael -
7. Re: Booking example, Tomcat, EJB3 and thou...
mlh496 Mar 6, 2007 12:22 AM (in response to mlh496)As an aside, once I get this figured out I will post a deploy.tomcat ant target that should work for the war apps created using the seam command line tool.
-Michael -
8. Re: Booking example, Tomcat, EJB3 and thou...
gavin.king Mar 6, 2007 12:23 AM (in response to mlh496)Show me the line in components.xml that installs the microcontainer.
-
9. Re: Booking example, Tomcat, EJB3 and thou...
mlh496 Mar 6, 2007 12:41 AM (in response to mlh496)Is this the line that does it?
<core:ejb installed="true"/>
-
10. Re: Booking example, Tomcat, EJB3 and thou...
gavin.king Mar 6, 2007 11:14 AM (in response to mlh496)Right. Now are you sure that that file actually makes it into the right place in the WAR?
Do you see it getting found in the Seam startup log?
Now, where are the lines in your log that show the mc and EJB3 container starting up? -
11. Re: Booking example, Tomcat, EJB3 and thou...
mlh496 Mar 6, 2007 2:51 PM (in response to mlh496)The components.xml file is in the /web-inf directory in the war file. In fact, I've added a context to Tomcat pointing to an exploded directory containing my web app, so I can confirm that the components.xml file is in the right place.
Here is an expanded excerpt from the log file:10:18:37,013 INFO [Initialization] reading /WEB-INF/components.xml 10:18:37,201 INFO [Initialization] reading jar:file:/C:/Apache%20Software%20Foundation/Tomcat%206.0/webapps/flow/WEB-INF/lib/jboss-seam-remoting.jar!/META-INF/components.xml 10:18:37,216 INFO [Initialization] reading jar:file:/C:/Apache%20Software%20Foundation/Tomcat%206.0/webapps/flow/WEB-INF/lib/jboss-seam.jar!/META-INF/components.xml 10:18:37,232 INFO [Initialization] reading properties from: /seam.properties 10:18:37,232 INFO [Initialization] reading properties from: /jndi.properties 10:18:37,232 INFO [Initialization] initializing Seam 10:18:37,232 INFO [Scanner] scanning: C:\Apache Software Foundation\Tomcat 6.0\webapps\flow\WEB-INF\classes 10:18:37,404 INFO [Scanner] scanning: /C:/Apache Software Foundation/Tomcat 6.0/webapps/flow/WEB-INF/lib/jboss-seam-mail.jar 10:18:37,451 INFO [Scanner] scanning: /C:/Apache Software Foundation/Tomcat 6.0/webapps/flow/WEB-INF/lib/jboss-seam-pdf.jar 10:18:37,498 INFO [Scanner] scanning: /C:/Apache Software Foundation/Tomcat 6.0/webapps/flow/WEB-INF/lib/jboss-seam-ui.jar 10:18:37,607 INFO [Scanner] scanning: /C:/Apache Software Foundation/Tomcat 6.0/webapps/flow/WEB-INF/lib/jboss-seam-remoting.jar 10:18:37,669 INFO [Scanner] scanning: /C:/Apache Software Foundation/Tomcat 6.0/webapps/flow/WEB-INF/lib/jboss-seam.jar 10:18:38,544 INFO [Initialization] two components with same name, higher precedence wins: org.jboss.seam.persistence.persistenceProvider 10:18:38,560 INFO [Initialization] two components with same name, higher precedence wins: org.jboss.seam.security.identity 10:18:38,623 INFO [Component] Component: org.jboss.seam.core.init, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.core.Init 10:18:38,685 WARN [Initialization] Did not install PojoCache due to NoClassDefFoundError: org/jgroups/MembershipListener 10:18:38,685 INFO [Initialization] Installing components... 10:18:38,685 INFO [Component] Component: org.jboss.seam.core.facesContext, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.core.FacesContext 10:18:38,701 INFO [Component] Component: org.jboss.seam.core.messages, scope: SESSION, type: JAVA_BEAN, class: org.jboss.seam.core.Messages 10:18:38,701 INFO [Component] Component: org.jboss.seam.core.isUserInRole, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.core.IsUserInRole 10:18:38,701 INFO [Component] Component: org.jboss.seam.theme.theme, scope: SESSION, type: JAVA_BEAN, class: org.jboss.seam.theme.Theme 10:18:38,701 INFO [Component] Component: org.jboss.seam.core.pageContext, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.core.PageContext 10:18:38,701 INFO [Component] Component: org.jboss.seam.core.validation, scope: EVENT, type: JAVA_BEAN, class: org.jboss.seam.core.Validation 10:18:38,701 INFO [Component] Component: org.jboss.seam.core.manager, scope: EVENT, type: JAVA_BEAN, class: org.jboss.seam.core.Manager 10:18:38,716 INFO [Component] Component: documentStore, scope: CONVERSATION, type: JAVA_BEAN, class: org.jboss.seam.pdf.DocumentStore 10:18:38,748 INFO [Component] Component: org.jboss.seam.core.locale, scope: STATELESS, type: JAVA_BEAN, class: org.jboss.seam.core.Locale 10:18:38,748 INFO [Component] Component: org.jboss.seam.core.pages, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.core.Pages 10:18:38,763 INFO [Component] Component: org.jboss.seam.servlet.exceptionFilter, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.web.ExceptionFilter 10:18:38,779 INFO [Component] Component: org.jboss.seam.core.applicationContext, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.core.ApplicationContext 10:18:38,779 INFO [Component] Component: org.jboss.seam.core.sessionContext, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.core.SessionContext 10:18:38,779 INFO [Component] Component: org.jboss.seam.core.validators, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.core.Validators 10:18:38,779 INFO [Component] Component: org.jboss.seam.core.conversationList, scope: PAGE, type: JAVA_BEAN, class: org.jboss.seam.core.ConversationList 10:18:38,779 INFO [Component] Component: org.jboss.seam.core.localeSelector, scope: SESSION, type: JAVA_BEAN, class: org.jboss.seam.core.LocaleSelector 10:18:38,794 INFO [Component] Component: org.jboss.seam.persistence.persistenceProvider, scope: STATELESS, type: JAVA_BEAN, class: org.jboss.seam.persistence.HibernatePersistenceProvider 10:18:38,794 INFO [Component] Component: org.jboss.seam.theme.themeSelector, scope: SESSION, type: JAVA_BEAN, class: org.jboss.seam.theme.ThemeSelector 10:18:38,794 INFO [Component] Component: usersList, scope: EVENT, type: JAVA_BEAN, class: com.mlh.flow.UsersList 10:18:38,826 INFO [Component] Component: org.jboss.seam.ui.resource.webResource, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.ui.resource.WebResource 10:18:38,826 INFO [Component] Component: surveyHome, scope: CONVERSATION, type: JAVA_BEAN, class: com.mlh.flow.SurveyHome 10:18:38,841 INFO [Component] Component: org.jboss.seam.core.persistenceContexts, scope: CONVERSATION, type: JAVA_BEAN, class: org.jboss.seam.core.PersistenceContexts 10:18:38,841 INFO [Component] Component: org.jboss.seam.framework.currentDatetime, scope: STATELESS, type: JAVA_BEAN, class: org.jboss.seam.framework.CurrentDatetime 10:18:38,841 INFO [Component] Component: org.jboss.seam.core.conversationEntries, scope: SESSION, type: JAVA_BEAN, class: org.jboss.seam.core.ConversationEntries 10:18:38,841 INFO [Component] Component: org.jboss.seam.core.businessProcessContext, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.core.BusinessProcessContext 10:18:38,841 INFO [Component] Component: org.jboss.seam.core.ejb, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.core.Ejb 10:18:38,841 INFO [Component] Component: authenticator, scope: EVENT, type: JAVA_BEAN, class: com.mlh.flow.Authenticator 10:18:38,857 INFO [Component] Component: org.jboss.seam.security.identity, scope: SESSION, type: JAVA_BEAN, class: org.jboss.seam.security.RuleBasedIdentity 10:18:38,873 INFO [Component] Component: org.jboss.seam.remoting.remoting, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.remoting.Remoting 10:18:38,873 INFO [Component] Component: org.jboss.seam.core.interpolator, scope: STATELESS, type: JAVA_BEAN, class: org.jboss.seam.core.Interpolator 10:18:38,873 INFO [Component] Component: org.jboss.seam.core.expressions, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.core.Expressions 10:18:38,873 INFO [Component] Component: org.jboss.seam.core.renderer, scope: STATELESS, type: JAVA_BEAN, class: org.jboss.seam.ui.facelet.FaceletsRenderer 10:18:38,888 INFO [Component] Component: org.jboss.seam.core.httpError, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.core.HttpError 10:18:38,888 INFO [Component] Component: leavesHome, scope: CONVERSATION, type: JAVA_BEAN, class: com.mlh.flow.LeavesHome 10:18:38,904 INFO [Component] Component: securityRules, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.drools.RuleBase 10:18:38,904 INFO [Component] Component: org.jboss.seam.core.events, scope: STATELESS, type: JAVA_BEAN, class: org.jboss.seam.core.Events 10:18:38,904 INFO [Component] Component: entityManager, scope: CONVERSATION, type: JAVA_BEAN, class: org.jboss.seam.core.ManagedPersistenceContext 10:18:38,919 INFO [Component] Component: org.jboss.seam.core.safeActions, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.core.SafeActions 10:18:38,919 INFO [Component] Component: org.jboss.seam.core.userPrincipal, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.core.UserPrincipal 10:18:38,919 INFO [Component] Component: org.jboss.seam.framework.currentDate, scope: STATELESS, type: JAVA_BEAN, class: org.jboss.seam.framework.CurrentDate 10:18:38,919 INFO [Component] Component: org.jboss.seam.core.methodContext, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.core.MethodContext 10:18:38,919 INFO [Component] Component: org.jboss.seam.core.uiComponent, scope: STATELESS, type: JAVA_BEAN, class: org.jboss.seam.core.UiComponent 10:18:38,919 INFO [Component] Component: org.jboss.seam.security.configuration, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.security.Configuration 10:18:38,919 INFO [Component] Component: usersHome, scope: CONVERSATION, type: JAVA_BEAN, class: com.mlh.flow.UsersHome 10:18:38,935 INFO [Component] Component: org.jboss.seam.servlet.multipartFilter, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.web.MultipartFilter 10:18:38,935 INFO [Component] Component: org.jboss.seam.framework.currentTime, scope: STATELESS, type: JAVA_BEAN, class: org.jboss.seam.framework.CurrentTime 10:18:38,935 INFO [Component] Component: org.jboss.seam.core.switcher, scope: PAGE, type: JAVA_BEAN, class: org.jboss.seam.core.Switcher 10:18:38,935 INFO [Component] Component: org.jboss.seam.core.exceptions, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.core.Exceptions 10:18:38,951 INFO [Component] Component: org.jboss.seam.core.facesMessages, scope: CONVERSATION, type: JAVA_BEAN, class: org.jboss.seam.core.FacesMessages 10:18:38,951 INFO [Component] Component: org.jboss.seam.core.redirect, scope: CONVERSATION, type: JAVA_BEAN, class: org.jboss.seam.core.Redirect 10:18:38,951 INFO [Component] Component: org.jboss.seam.core.conversationContext, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.core.ConversationContext 10:18:38,951 INFO [Component] Component: surveyList, scope: EVENT, type: JAVA_BEAN, class: com.mlh.flow.SurveyList 10:18:38,951 INFO [Component] Component: org.jboss.seam.servlet.redirectFilter, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.web.RedirectFilter 10:18:38,951 INFO [Component] Component: org.jboss.seam.core.facesPage, scope: PAGE, type: JAVA_BEAN, class: org.jboss.seam.core.FacesPage 10:18:38,951 INFO [Component] Component: org.jboss.seam.core.eventContext, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.core.EventContext 10:18:38,966 INFO [Component] Component: flowEntityManagerFactory, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.core.EntityManagerFactory 10:18:38,966 INFO [Component] Component: org.jboss.seam.debug.contexts, scope: APPLICATION, type: JAVA_BEAN, class: org.jboss.seam.debug.Contexts 10:18:38,966 INFO [Component] Component: org.jboss.seam.debug.introspector, scope: EVENT, type: JAVA_BEAN, class: org.jboss.seam.debug.Introspector 10:18:38,966 INFO [Component] Component: org.jboss.seam.core.resourceBundle, scope: SESSION, type: JAVA_BEAN, class: org.jboss.seam.core.ResourceBundle 10:18:38,982 INFO [Component] Component: leavesList, scope: EVENT, type: JAVA_BEAN, class: com.mlh.flow.LeavesList 10:18:38,982 INFO [Component] Component: org.jboss.seam.core.conversationStack, scope: PAGE, type: JAVA_BEAN, class: org.jboss.seam.core.ConversationStack 10:18:38,982 INFO [Component] Component: org.jboss.seam.core.conversation, scope: CONVERSATION, type: JAVA_BEAN, class: org.jboss.seam.core.Conversation 10:18:38,998 INFO [Lifecycle] starting up: org.jboss.seam.servlet.multipartFilter 10:18:39,013 INFO [Lifecycle] starting up: flowEntityManagerFactory 10:18:39,044 INFO [Version] Hibernate EntityManager 3.2.0.CR1 10:18:39,060 INFO [Version] Hibernate Annotations 3.2.0.CR1 10:18:39,076 INFO [Environment] Hibernate 3.2 cr2 10:18:39,091 INFO [Environment] hibernate.properties not found 10:18:39,091 INFO [Environment] Bytecode provider name : cglib 10:18:39,107 INFO [Environment] using JDK 1.4 java.sql.Timestamp handling 10:18:39,716 WARN [FileZippedJarVisitor] Unable to find file (ignored): file:/C:/Apache%20Software%20Foundation/Tomcat%206.0/webapps/flow/WEB-INF/classes java.io.FileNotFoundException: C:\Apache Software Foundation\Tomcat 6.0\webapps\flow\WEB-INF\classes (Access is denied) at java.util.zip.ZipFile.open(Native Method) at java.util.zip.ZipFile.<init>(Unknown Source) at java.util.jar.JarFile.<init>(Unknown Source) at java.util.jar.JarFile.<init>(Unknown Source) at org.hibernate.ejb.packaging.FileZippedJarVisitor.doProcessElements(FileZippedJarVisitor.java:34) at org.hibernate.ejb.packaging.JarVisitor.getMatchingEntries(JarVisitor.java:208) at org.hibernate.ejb.Ejb3Configuration.addMetadataFromVisitor(Ejb3Configuration.java:223) at org.hibernate.ejb.Ejb3Configuration.createEntityManagerFactory(Ejb3Configuration.java:200) at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:114) at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:37) at org.jboss.seam.core.EntityManagerFactory.startup(EntityManagerFactory.java:74) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.jboss.seam.util.Reflections.invoke(Reflections.java:18) at org.jboss.seam.util.Reflections.invokeAndWrap(Reflections.java:121) at org.jboss.seam.Component.callComponentMethod(Component.java:1810) at org.jboss.seam.Component.callCreateMethod(Component.java:1725) at org.jboss.seam.Component.newInstance(Component.java:1714) at org.jboss.seam.contexts.Lifecycle.startup(Lifecycle.java:165) at org.jboss.seam.contexts.Lifecycle.endInitialization(Lifecycle.java:137) at org.jboss.seam.init.Initialization.init(Initialization.java:479) at org.jboss.seam.servlet.SeamListener.contextInitialized(SeamListener.java:33) at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3827) at org.apache.catalina.core.StandardContext.start(StandardContext.java:4336) at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:761) at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:741) at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:525) at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:825) at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:714) at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:490) at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1138) at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311) at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:120) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1023) at org.apache.catalina.core.StandardHost.start(StandardHost.java:719) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1015) at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443) at org.apache.catalina.core.StandardService.start(StandardService.java:448) at org.apache.catalina.core.StandardServer.start(StandardServer.java:710) at org.apache.catalina.startup.Catalina.start(Catalina.java:552) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413) 10:18:39,732 WARN [Ejb3Configuration] Overriding hibernate.transaction.factory_class is dangerous, this might break the EJB3 specification implementation 10:18:39,904 INFO [NamingHelper] JNDI InitialContext properties:{java.naming.factory.initial=org.jnp.interfaces.LocalOnlyContextFactory, java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces} 10:18:39,935 ERROR [NamingHelper] Could not obtain initial context javax.naming.NamingException: Local server is not initialized at org.jnp.interfaces.LocalOnlyContextFactory.getInitialContext(LocalOnlyContextFactory.java:45) at javax.naming.spi.NamingManager.getInitialContext(Unknown Source)
When I first saw the "Access is denied" message, I stopped Tomcat, cleared all caches - including the unzipped war file - and restarted. The same message appeared.
Thank you for your patience & help,
-Michael