Hi,
thanks for the answers, i tried both, but i did not helped. Which
persistence version you are using?
Information: [EL Info]: 2014-10-31
20:51:18.119--ServerSession(648005980)--EclipseLink, version: Eclipse
Persistence Services - 2.5.2.v20140319-9ad6abd
Information: [EL Severe]: ejb: 2014-10-31
20:51:18.12--ServerSession(648005980)--java.lang.IllegalStateException:
This web container has not yet been started
Information: [ERROR] ioc.Registry
javax.persistence.PersistenceException: java.lang.IllegalStateException:
This web container has not yet been started
Information: [ERROR] ioc.Registry Operations trace:
Information: [ERROR] ioc.Registry [ 1] Invoking startup method
org.apache.tapestry5.jpa.modules.JpaModule.startupEarly(EntityManagerManager,
boolean).
Schwerwiegend: WebModule[/AEOnlineExtranet]Exception starting filter app
java.lang.InstantiationException
at
org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:135)
at
org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:5329)
at
org.apache.catalina.core.StandardContext.start(StandardContext.java:5943)
at com.sun.enterprise.web.WebModule.start(WebModule.java:691)
at
org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:1041)
at
org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:1024)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:747)
at
com.sun.enterprise.web.WebContainer.loadWebModule(WebContainer.java:2286)
at
com.sun.enterprise.web.WebContainer.loadWebModule(WebContainer.java:1932)
at com.sun.enterprise.web.WebApplication.start(WebApplication.java:139)
at org.glassfish.internal.data.EngineRef.start(EngineRef.java:122)
at org.glassfish.internal.data.ModuleInfo.start(ModuleInfo.java:291)
at
org.glassfish.internal.data.ApplicationInfo.start(ApplicationInfo.java:352)
at
com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:500)
at
com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:219)
at
org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:491)
at
com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:539)
at
com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:535)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:360)
at
com.sun.enterprise.v3.admin.CommandRunnerImpl$2.execute(CommandRunnerImpl.java:534)
at
com.sun.enterprise.v3.admin.CommandRunnerImpl$3.run(CommandRunnerImpl.java:565)
at
com.sun.enterprise.v3.admin.CommandRunnerImpl$3.run(CommandRunnerImpl.java:557)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:360)
at
com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:556)
at
com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1464)
at
com.sun.enterprise.v3.admin.CommandRunnerImpl.access$1300(CommandRunnerImpl.java:109)
at
com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1846)
at
com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1722)
at
com.sun.enterprise.v3.admin.AdminAdapter.doCommand(AdminAdapter.java:534)
at
com.sun.enterprise.v3.admin.AdminAdapter.onMissingResource(AdminAdapter.java:224)
at
org.glassfish.grizzly.http.server.StaticHttpHandlerBase.service(StaticHttpHandlerBase.java:189)
at
com.sun.enterprise.v3.services.impl.ContainerMapper$HttpHandlerCallable.call(ContainerMapper.java:459)
at
com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:167)
at
org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:201)
at
org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:175)
at
org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:235)
at
org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119)
at
org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:284)
at
org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:201)
at
org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:133)
at
org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:112)
at
org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77)
at
org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:561)
at
org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:112)
at
org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:117)
at
org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:56)
at
org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:137)
at
org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:565)
at
org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:545)
at java.lang.Thread.run(Thread.java:745)
Caused by: org.apache.tapestry5.ioc.internal.OperationException:
javax.persistence.PersistenceException: java.lang.IllegalStateException:
This web container has not yet been started
at
org.apache.tapestry5.ioc.internal.OperationTrackerImpl.logAndRethrow(OperationTrackerImpl.java:184)
at
org.apache.tapestry5.ioc.internal.OperationTrackerImpl.run(OperationTrackerImpl.java:62)
at
org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.run(PerThreadOperationTracker.java:60)
at
org.apache.tapestry5.ioc.internal.RegistryImpl.run(RegistryImpl.java:1252)
at
org.apache.tapestry5.ioc.internal.StartupDefImpl.invoke(StartupDefImpl.java:48)
at
org.apache.tapestry5.ioc.internal.RegistryImpl$2.run(RegistryImpl.java:229)
at
org.apache.tapestry5.ioc.internal.RegistryImpl.performRegistryStartup(RegistryImpl.java:360)
at
org.apache.tapestry5.ioc.internal.RegistryWrapper.performRegistryStartup(RegistryWrapper.java:89)
at org.apache.tapestry5.TapestryFilter.init(TapestryFilter.java:112)
at
org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:275)
at
org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:131)
... 51 more
Caused by: java.lang.RuntimeException:
javax.persistence.PersistenceException: java.lang.IllegalStateException:
This web container has not yet been started
at
org.apache.tapestry5.ioc.internal.StartupDefImpl$1.run(StartupDefImpl.java:84)
at
org.apache.tapestry5.ioc.internal.OperationTrackerImpl.run(OperationTrackerImpl.java:56)
... 60 more
Caused by: javax.persistence.PersistenceException:
java.lang.IllegalStateException: This web container has not yet been started
at
org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:766)
at
org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.getAbstractSession(EntityManagerFactoryDelegate.java:204)
at
org.eclipse.persistence.internal.jpa.EntityManagerFactoryDelegate.createEntityManagerImpl(EntityManagerFactoryDelegate.java:304)
at
org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManagerImpl(EntityManagerFactoryImpl.java:336)
at
org.eclipse.persistence.internal.jpa.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:302)
at
org.apache.tapestry5.internal.jpa.EntityManagerSourceImpl.create(EntityManagerSourceImpl.java:281)
at $EntityManagerSource_6f1d45bf6d0.create(Unknown Source)
at
org.apache.tapestry5.internal.jpa.EntityManagerManagerImpl.getOrCreateEntityManager(EntityManagerManagerImpl.java:80)
at
org.apache.tapestry5.internal.jpa.EntityManagerManagerImpl.createAllEntityManagers(EntityManagerManagerImpl.java:70)
at
org.apache.tapestry5.internal.jpa.EntityManagerManagerImpl.getEntityManagers(EntityManagerManagerImpl.java:61)
at $EntityManagerManager_6f1d45bf6cf.getEntityManagers(Unknown Source)
at $EntityManagerManager_6f1d45bf6ce.getEntityManagers(Unknown Source)
at
org.apache.tapestry5.jpa.modules.JpaModule.startupEarly(JpaModule.java:187)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at
org.apache.tapestry5.ioc.internal.StartupDefImpl$1.run(StartupDefImpl.java:70)
... 61 more
Caused by: java.lang.IllegalStateException: This web container has not
yet been started
at
org.glassfish.web.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1674)
at
org.glassfish.web.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1633)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:344)
at
org.eclipse.persistence.internal.security.PrivilegedAccessHelper.getClassForName(PrivilegedAccessHelper.java:124)
at
org.eclipse.persistence.sessions.DefaultConnector.loadDriverClass(DefaultConnector.java:253)
at
org.eclipse.persistence.sessions.DefaultConnector.connect(DefaultConnector.java:85)
at
org.eclipse.persistence.sessions.DatasourceLogin.connectToDatasource(DatasourceLogin.java:162)
at
org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.setOrDetectDatasource(DatabaseSessionImpl.java:204)
at
org.eclipse.persistence.internal.sessions.DatabaseSessionImpl.loginAndDetectDatasource(DatabaseSessionImpl.java:741)
at
org.eclipse.persistence.internal.jpa.EntityManagerFactoryProvider.login(EntityManagerFactoryProvider.java:239)
at
org.eclipse.persistence.internal.jpa.EntityManagerSetupImpl.deploy(EntityManagerSetupImpl.java:685)
... 78 more
Am 30.10.14 um 08:56 schrieb Antal van Kalleveen:
Interresting,
We've had the same 'problems' and i solved it with a 'mapped' caching
EntityProvider, like this:
package nl.intercommit.godocument.services.internal.core;
import java.util.HashMap;
import java.util.Map;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import org.apache.tapestry5.internal.jpa.JpaInternalUtils;
import org.apache.tapestry5.ioc.AnnotationProvider;
import org.apache.tapestry5.ioc.ObjectCreator;
import org.apache.tapestry5.ioc.ObjectLocator;
import org.apache.tapestry5.ioc.ObjectProvider;
import org.apache.tapestry5.ioc.annotations.PostInjection;
import org.apache.tapestry5.ioc.services.PlasticProxyFactory;
import org.apache.tapestry5.jpa.EntityManagerManager;
/*
* ObjectProvider for EntityManager that takes the unitname as key for proxy
caching.
*
*/
public class MappedEntityManagerObjectProvider implements ObjectProvider {
// these are alive for the lifetime of the application
private Map<String,EntityManager> proxies;
@PostInjection
public void setup() {
proxies = new HashMap<String, EntityManager>(3);
}
/**
* {@inheritDoc}
*/
public <T> T provide(final Class<T> objectType, final AnnotationProvider
annotationProvider,
final ObjectLocator locator)
{
if (objectType.equals(EntityManager.class))
return objectType.cast(getOrCreateProxy(annotationProvider,
locator));
return null;
}
private synchronized EntityManager getOrCreateProxy(
final AnnotationProvider annotationProvider, final ObjectLocator
objectLocator) {
final PersistenceContext annotation =
annotationProvider.getAnnotation(PersistenceContext.class);
String name = null;
if (annotation != null) {
name = annotation.unitName();
}
if (!proxies.containsKey(name)) {
final PlasticProxyFactory classFactory =
objectLocator.getService("PlasticProxyFactory",PlasticProxyFactory.class);
final EntityManager proxy =
classFactory.createProxy(EntityManager.class, new ObjectCreator<EntityManager>()
{
public EntityManager createObject()
{
final EntityManagerManager entityManagerManager =
objectLocator.getService(EntityManagerManager.class);
return
JpaInternalUtils.getEntityManager(entityManagerManager, annotation);
}
}, "<EntityManagerProxy>");
if (name != null) {
proxies.put(name, proxy);
}
return proxy;
}
return proxies.get(name);
}
}
And then in the application module:
@Contribute(MasterObjectProvider.class)
public static void provideObjectProviders(final
OrderedConfiguration<ObjectProvider> configuration) {
// Override the entitymanager object provider !
configuration.overrideInstance("EntityManager",
MappedEntityManagerObjectProvider.class,"before:AnnotationBasedContributions");
}
---- OriginalMessage ----
From: "John" <j...@quivinco.com>
To: "Tapestry users" <users@tapestry.apache.org>
Sent: Thu, Oct 30, 2014, 08:27
Subject: Re: persistence units
Hi,
To get Tapestry 5.3.7 working with more than 1 PU, 2 SQL Servers and 1
PostgreSQL Db in my case, I supplied this modified class in my project JAR.
I'm not sure this works on 5.4 or is required? Without this change I think
you just get the first defined PU whatever you define with
PersistenceContext.
This code has been used on a live system for years now, it's solid. Suggest
you try it and report back.
John
/**
* EntityManagerObjectProvider.java
*/
package org.apache.tapestry5.internal.jpa;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import org.apache.tapestry5.ioc.AnnotationProvider;
import org.apache.tapestry5.ioc.ObjectCreator;
import org.apache.tapestry5.ioc.ObjectLocator;
import org.apache.tapestry5.ioc.ObjectProvider;
import org.apache.tapestry5.ioc.services.PlasticProxyFactory;
import org.apache.tapestry5.jpa.EntityManagerManager;
/**
* A patched version to use PlasticProxyFactory and not cache the
EntityManager
* as a class member.
*
* @author John Coleman
*/
public class EntityManagerObjectProvider implements ObjectProvider {
/**
* {@inheritDoc}
*/
public <T> T provide(final Class<T> objectType,
final AnnotationProvider annotationProvider,
final ObjectLocator locator) {
if (objectType.equals(EntityManager.class))
return objectType
.cast(getOrCreateProxy(annotationProvider, locator));
return null;
}
private synchronized EntityManager getOrCreateProxy(
final AnnotationProvider annotationProvider,
final ObjectLocator objectLocator) {
final PlasticProxyFactory proxyFactory = objectLocator.getService(
"PlasticProxyFactory", PlasticProxyFactory.class);
final PersistenceContext annotation = annotationProvider
.getAnnotation(PersistenceContext.class);
EntityManager proxy = proxyFactory.createProxy(EntityManager.class,
new ObjectCreator<EntityManager>() {
public EntityManager createObject() {
final EntityManagerManager entityManagerManager = objectLocator
.getService(EntityManagerManager.class);
return JpaInternalUtils.getEntityManager(
entityManagerManager, annotation);
}
}, "<EntityManagerProxy>");
return proxy;
}
--
ae | Andreas Ernst | IT Spektrum
Postfach 5, 65612 Beselich
Schupbacher Str. 32, 65614 Beselich, Germany
Tel: +49-6484-91002 Fax: +49-6484-91003
a...@ae-online.de | www.ae-online.de
www.tachyon-online.de
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org