2017-05-09 15:24 GMT+03:00 Romain Manni-Bucau <[email protected]>:
>
> It is pretty close to what I understandood but also means you don't have
> this resources.xml blocker since you will:
>
> 1. check the ear
> 2. add drivers in tomee/lib
> 3. append the resource definition in tomee.xml (or another file if you
want
> to use an import for instance or system.properties)
> 4. start
>
> does it sounds like doable?

Yes that's what also started to think as a solution.

Thanks

> Side note: this is something easily doable with tomee maven plugin
>
>
>
> Romain Manni-Bucau
> @rmannibucau <https://twitter.com/rmannibucau> |  Blog
> <https://blog-rmannibucau.rhcloud.com> | Old Blog
> <http://rmannibucau.wordpress.com> | Github <
https://github.com/rmannibucau> |
> LinkedIn <https://www.linkedin.com/in/rmannibucau> | JavaEE Factory
> <https://javaeefactory-rmannibucau.rhcloud.com>
>
> 2017-05-09 14:05 GMT+02:00 Violeta Georgieva <[email protected]>:
>
> > 2017-05-09 13:48 GMT+03:00 Romain Manni-Bucau <[email protected]>:
> > >
> > > Hmm, feel like I'm missing something so let me dump few pointers
> > hopefully
> > > helping to identify that:
> >
> > Here is the scenario:
> > - the user provides its EAR file which may or may not contain a driver
> > file.
> > - the first phase is a "staging" phase. During this phase only
> > configurations will happen. The EAR will be analyzed.
> > If the EAR doesn't contain a driver for the database (EAR/lib will be
> > evaluated), a driver will be downloaded and placed in EAR/lib (or
> > TomEE/lib), otherwise such download will not be performed.
> > There might be other configuration that will be applied.
> > - the second phase is the phase when TomEE will be started with all
> > configurations and additional libraries in place and with the
application
> > of course.
> >
> >
> > >
> > > - if you don't own the app then you can only customize the server and
> > > therefore don't hit this limitation, no?
> > > - how would you handle "if there use it, if not use another one", with
> > > openejb.classloader.forced-load?
> > > - I'm still reading it as you customize the container and therefore
don't
> > > hit this issue since you add drivers in the container
> > >
> > >
> > > Romain Manni-Bucau
> > > @rmannibucau <https://twitter.com/rmannibucau> |  Blog
> > > <https://blog-rmannibucau.rhcloud.com> | Old Blog
> > > <http://rmannibucau.wordpress.com> | Github <
> > https://github.com/rmannibucau> |
> > > LinkedIn <https://www.linkedin.com/in/rmannibucau> | JavaEE Factory
> > > <https://javaeefactory-rmannibucau.rhcloud.com>
> > >
> > > 2017-05-09 12:45 GMT+02:00 Violeta Georgieva <[email protected]>:
> > >
> > > > 2017-05-09 13:24 GMT+03:00 Romain Manni-Bucau <[email protected]
>:
> > > > >
> > > > > 2017-05-09 12:18 GMT+02:00 Violeta Georgieva <[email protected]
>:
> > > > >
> > > > > > 2017-05-09 11:32 GMT+03:00 Romain Manni-Bucau <
> > [email protected]
> > >:
> > > > > > >
> > > > > > > Right, lazy will not activate it early enough for JPA.
> > > > > > >
> > > > > > > Issue is we don't have the ear classloader (or webapp ones)
when
> > > > wiring
> > > > > > the
> > > > > > > EE application, we can let JPA lazy retrieve the datasource if
> > needed
> > > > but
> > > > > > > will still rely on lazy flag.
> > > > > >
> > > > > > Ok
> > > > > >
> > > > > > >
> > > > > > > Side note: think it is still recommanded to not load drivers
from
> > sub
> > > > JVM
> > > > > > > classloader cause they can't always be unloaded, isn't it?
> > > > > >
> > > > > > My use case is a container that holds TomEE + EAR application.
> > > > > > When it is started everything is started.
> > > > > > When it is stopped everything is stopped.
> > > > > >
> > > > > >
> > > > > If you own the container then you can define it in tomee.xml and
use
> > > > > tomee/lib no? Did it get it wrong?
> > > >
> > > > I do not own the app.
> > > > I wanted to achieve the following:
> > > > - If the app has a driver packaged in an EAR to use it as is
> > > > - If the app does not have a driver to supply such.
> > > >
> > > > >
> > > > >
> > > > > > Thanks,
> > > > > > Violeta
> > > > > >
> > > > > > >
> > > > > > > Romain Manni-Bucau
> > > > > > > @rmannibucau <https://twitter.com/rmannibucau> |  Blog
> > > > > > > <https://blog-rmannibucau.rhcloud.com> | Old Blog
> > > > > > > <http://rmannibucau.wordpress.com> | Github <
> > > > > > https://github.com/rmannibucau> |
> > > > > > > LinkedIn <https://www.linkedin.com/in/rmannibucau> | JavaEE
> > Factory
> > > > > > > <https://javaeefactory-rmannibucau.rhcloud.com>
> > > > > > >
> > > > > > > 2017-05-09 10:26 GMT+02:00 Violeta Georgieva <
> > [email protected]
> > >:
> > > > > > >
> > > > > > > > 2017-05-09 11:04 GMT+03:00 Romain Manni-Bucau <
> > > > [email protected]
> > > > >:
> > > > > > > > >
> > > > > > > > > Guess you can still use Lazy=true.
> > > > > > > >
> > > > > > > > With Lazy flag I'm receiving the exception below. I tried
> > > > > > > > also UseAppClassLoader = true the exception is the same as
> > below.
> > > > > > > >
> > > > > > > > org.apache.openejb.OpenEJBException: Could not lookup
> > > > > > <jta-data-source>
> > > > > > > > 'openejb/Resource/eartest/jdbc/mydb' for unit 'mydb': Unable
> > to
> > > > > > resolve
> > > > > > > > class org.hsqldb.jdbcDriver: Could not lookup
<jta-data-source>
> > > > > > > > 'openejb/Resource/eartest/jdbc/mydb' for unit 'mydb': Unable
> > to
> > > > > > resolve
> > > > > > > > class org.hsqldb.jdbcDriver
> > > > > > > > at
> > > > > > > > org.apache.openejb.assembler.classic.Assembler.
> > > > > > > > createApplication(Assembler.java:1042)
> > > > > > > > at
> > > > > > > > org.apache.openejb.assembler.classic.Assembler.
> > > > > > > > createApplication(Assembler.java:718)
> > > > > > > > at
> > > > > > > > org.apache.openejb.assembler.classic.Assembler.
> > > > > > > > createApplication(Assembler.java:714)
> > > > > > > > at
> > > > > > > > org.apache.tomee.catalina.TomcatWebAppBuilder.checkHost(
> > > > > > > > TomcatWebAppBuilder.java:2223)
> > > > > > > > at
> > > > > > > > org.apache.tomee.catalina.GlobalListenerSupport.
> > lifecycleEvent(
> > > > > > > > GlobalListenerSupport.java:141)
> > > > > > > > at
> > > > > > > > org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(
> > > > > > > > LifecycleBase.java:94)
> > > > > > > > at
> > > > > > > > org.apache.catalina.core.ContainerBase.backgroundProcess(
> > > > > > > > ContainerBase.java:1164)
> > > > > > > > at
> > > > > > > > org.apache.catalina.core.ContainerBase$
> > > > ContainerBackgroundProcessor.
> > > > > > > > processChildren(ContainerBase.java:1388)
> > > > > > > > at
> > > > > > > > org.apache.catalina.core.ContainerBase$
> > > > ContainerBackgroundProcessor.
> > > > > > > > processChildren(ContainerBase.java:1392)
> > > > > > > > at
> > > > > > > > org.apache.catalina.core.ContainerBase$
> > > > ContainerBackgroundProcessor.
> > > > > > > > run(ContainerBase.java:1360)
> > > > > > > > at java.lang.Thread.run(Thread.java:745)
> > > > > > > > Caused by: org.apache.openejb.OpenEJBException:
> > > > > > > > org.apache.openejb.OpenEJBException: Could not lookup
> > > > > > <jta-data-source>
> > > > > > > > 'openejb/Resource/eartest/jdbc/mydb' for unit 'mydb': Unable
> > to
> > > > > > resolve
> > > > > > > > class org.hsqldb.jdbcDriver: Could not lookup
<jta-data-source>
> > > > > > > > 'openejb/Resource/eartest/jdbc/mydb' for unit 'mydb': Unable
> > to
> > > > > > resolve
> > > > > > > > class org.hsqldb.jdbcDriver
> > > > > > > > at
> > > > > > > > org.apache.openejb.assembler.classic.Assembler.
> > > > > > > > createApplication(Assembler.java:873)
> > > > > > > > ... 10 more
> > > > > > > > Caused by: org.apache.openejb.OpenEJBException: Could not
> > lookup
> > > > > > > > <jta-data-source> 'openejb/Resource/eartest/jdbc/mydb' for
> > unit
> > > > > > 'mydb':
> > > > > > > > Unable to resolve class org.hsqldb.jdbcDriver
> > > > > > > > at
> > > > > > > > org.apache.openejb.assembler.classic.PersistenceBuilder.
> > > > > > > > createEntityManagerFactory(PersistenceBuilder.java:96)
> > > > > > > > at
> > > > > > > > org.apache.openejb.assembler.classic.Assembler.
> > > > > > > > createApplication(Assembler.java:867)
> > > > > > > > ... 10 more
> > > > > > > > Caused by:
> > > > > > > > org.apache.openejb.core.ivm.naming.LazyObjectReference$
> > > > > > > > LazyNamingException:
> > > > > > > > Unable to resolve class org.hsqldb.jdbcDriver
> > > > > > > > at
> > > > > > > > org.apache.openejb.core.ivm.naming.LazyObjectReference.
> > > > > > > > getObject(LazyObjectReference.java:39)
> > > > > > > > at org.apache.openejb.core.ivm.naming.IvmContext.lookup(
> > > > > > > > IvmContext.java:176)
> > > > > > > > at
> > > > > > > > org.apache.openejb.assembler.classic.PersistenceBuilder.
> > > > > > > > createEntityManagerFactory(PersistenceBuilder.java:90)
> > > > > > > > ... 11 more
> > > > > > > >
> > > > > > > >
> > > > > > > > >
> > > > > > > > > 2017-05-09 9:52 GMT+02:00 Violeta Georgieva <
> > > > [email protected]
> > > > >:
> > > > > > > > >
> > > > > > > > > > Hi,
> > > > > > > > > >
> > > > > > > > > > 2017-05-09 10:02 GMT+03:00 Romain Manni-Bucau <
> > > > > > [email protected]
> > > > > > >:
> > > > > > > > > > >
> > > > > > > > > > > Hi Violeta,
> > > > > > > > > > >
> > > > > > > > > > > yes for ears intent was to put the descriptor in
META-INF
> > and
> > > > the
> > > > > > > > driver
> > > > > > > > > > in
> > > > > > > > > > > ear/lib. That said you can add Lazy=true to support
wars.
> > > > > > > > > >
> > > > > > > > > > I tried to put the driver in the EAR/lib and the
> > resources.xml
> > > > file
> > > > > > in
> > > > > > > > > > EAR/META-INF.
> > > > > > > > > > Unfortunately the driver still cannot be found.
(exception
> > > > below, I
> > > > > > > > > > intentionally removed the hsqldb from TomEE/lib)
> > > > > > > > > >
> > > > > > > > > > Debugging the code I saw that the context class loader
was
> > used
> > > > > > [1].
> > > > > > > > The
> > > > > > > > > > context class loader was the loader that contains
TomEE/lib
> > and
> > > > not
> > > > > > the
> > > > > > > > > > EAR/lib.
> > > > > > > > > >
> > > > > > > > > > Shouldn't it use the EAR class loader?
> > > > > > > > > >
> > > > > > > > > > Regards,
> > > > > > > > > > Violeta
> > > > > > > > > >
> > > > > > > > > > [1]
> > > > > > > > > > https://github.com/apache/tomee/blob/master/container/
> > > > > > > > > > openejb-core/src/main/java/org/apache/openejb/assembler/
> > > > > > > > > > classic/Assembler.java#L2949
> > > > > > > > > >
> > > > > > > > > >
 org.apache.xbean.propertyeditor.PropertyEditorException:
> > > > Unable
> > > > > > to
> > > > > > > > > > resolve
> > > > > > > > > > class org.hsqldb.jdbcDriver
> > > > > > > > > > at
> > > > > > > > > >
> > > > > > > >
> > > > > > org.apache.xbean.propertyeditor.ClassEditor.
> > > > toObjectImpl(ClassEditor.java:
> > > > > > > > > > 43)
> > > > > > > > > > at
> > > > > > > > > > org.apache.xbean.propertyeditor.
> > AbstractConverter.toObject(
> > > > > > > > > > AbstractConverter.java:86)
> > > > > > > > > > at
> > > > > > > > > >
org.apache.xbean.propertyeditor.PropertyEditors.getValue(
> > > > > > > > > > PropertyEditors.java:284)
> > > > > > > > > > at
> > > > > > org.apache.xbean.recipe.RecipeHelper.convert(
> > RecipeHelper.java:181)
> > > > > > > > > > at
> > > > > > > > > > org.apache.xbean.recipe.ObjectRecipe.
> > extractConstructorArgs(
> > > > > > > > > > ObjectRecipe.java:592)
> > > > > > > > > > at
> > > > > > > > > >
> > > > > > > >
> > > > > > org.apache.xbean.recipe.ObjectRecipe.internalCreate(
> > > > ObjectRecipe.java:275)
> > > > > > > > > > at org.apache.xbean.recipe.AbstractRecipe.create(
> > > > > > > > AbstractRecipe.java:96)
> > > > > > > > > > at org.apache.xbean.recipe.AbstractRecipe.create(
> > > > > > > > AbstractRecipe.java:61)
> > > > > > > > > > at
> > > > > > > > > >
> > > > > > > >
> > > > > > org.apache.openejb.assembler.classic.Assembler.
> > > > doCreateResource(Assembler.
> > > > > > > > > > java:2970)
> > > > > > > > > > at
> > > > > > > > > > org.apache.openejb.assembler.classic.Assembler.
> > > > > > > > > > createResource(Assembler.java:2803)
> > > > > > > > > > at
> > > > > > > > > >
org.apache.openejb.config.ConfigurationFactory.doInstall(
> > > > > > > > > > ConfigurationFactory.java:466)
> > > > > > > > > > at
> > > > > > > > > > org.apache.openejb.config.ConfigurationFactory.install(
> > > > > > > > > > ConfigurationFactory.java:459)
> > > > > > > > > > at
> > > > > > > > > >
> > > > > > > >
> > > > > > org.apache.openejb.config.AutoConfig.installResource(
> > > > AutoConfig.java:2194)
> > > > > > > > > > at
> > > > > > > > > > org.apache.openejb.config.AutoConfig.
> > > > processApplicationResources(
> > > > > > > > > > AutoConfig.java:1026)
> > > > > > > > > > at
org.apache.openejb.config.AutoConfig.deploy(AutoConfig.
> > > > > > java:190)
> > > > > > > > > > at
> > > > > > > > > > org.apache.openejb.config.ConfigurationFactory$Chain.
> > > > > > > > > > deploy(ConfigurationFactory.java:420)
> > > > > > > > > > at
> > > > > > > > > > org.apache.openejb.config.ConfigurationFactory.
> > > > > > configureApplication(
> > > > > > > > > > ConfigurationFactory.java:1037)
> > > > > > > > > > at
> > > > > > > > > > org.apache.tomee.catalina.TomcatWebAppBuilder.checkHost(
> > > > > > > > > > TomcatWebAppBuilder.java:2204)
> > > > > > > > > > at
> > > > > > > > > > org.apache.tomee.catalina.GlobalListenerSupport.
> > > > lifecycleEvent(
> > > > > > > > > > GlobalListenerSupport.java:141)
> > > > > > > > > > at
> > > > > > > > > >
org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(
> > > > > > > > > > LifecycleBase.java:94)
> > > > > > > > > > at
> > > > > > > > > >
org.apache.catalina.core.ContainerBase.backgroundProcess(
> > > > > > > > > > ContainerBase.java:1164)
> > > > > > > > > > at
> > > > > > > > > > org.apache.catalina.core.ContainerBase$
> > > > > > ContainerBackgroundProcessor.
> > > > > > > > > > processChildren(ContainerBase.java:1388)
> > > > > > > > > > at
> > > > > > > > > > org.apache.catalina.core.ContainerBase$
> > > > > > ContainerBackgroundProcessor.
> > > > > > > > > > processChildren(ContainerBase.java:1392)
> > > > > > > > > > at
> > > > > > > > > > org.apache.catalina.core.ContainerBase$
> > > > > > ContainerBackgroundProcessor.
> > > > > > > > > > run(ContainerBase.java:1360)
> > > > > > > > > > at java.lang.Thread.run(Thread.java:745)
> > > > > > > > > > Caused by: java.lang.ClassNotFoundException:
> > > > org.hsqldb.jdbcDriver
> > > > > > > > > > at
> > java.net.URLClassLoader.findClass(URLClassLoader.java:381)
> > > > > > > > > > at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
> > > > > > > > > > at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
> > > > > > > > > > at java.lang.Class.forName0(Native Method)
> > > > > > > > > > at java.lang.Class.forName(Class.java:348)
> > > > > > > > > > at
> > > > > > > > > >
> > > > > > > >
> > > > > > org.apache.xbean.propertyeditor.ClassEditor.
> > > > toObjectImpl(ClassEditor.java:
> > > > > > > > > > 40)
> > > > > > > > > > ... 24 more
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > > Romain Manni-Bucau
> > > > > > > > > > > @rmannibucau <https://twitter.com/rmannibucau> |  Blog
> > > > > > > > > > > <https://blog-rmannibucau.rhcloud.com> | Old Blog
> > > > > > > > > > > <http://rmannibucau.wordpress.com> | Github <
> > > > > > > > > > https://github.com/rmannibucau> |
> > > > > > > > > > > LinkedIn <https://www.linkedin.com/in/rmannibucau> |
> > JavaEE
> > > > > > Factory
> > > > > > > > > > > <https://javaeefactory-rmannibucau.rhcloud.com>
> > > > > > > > > > >
> > > > > > > > > > > 2017-05-08 23:04 GMT+02:00 Violeta Georgieva <
> > > > > > [email protected]
> > > > > > >:
> > > > > > > > > > >
> > > > > > > > > > > > Hi,
> > > > > > > > > > > >
> > > > > > > > > > > > I have WAR archive that contains a driver, located
in
> > > > > > WEB-INF/lib
> > > > > > > > and
> > > > > > > > > > > > resources.xml, located in WEB-INF. The WAR file is
> > packaged
> > > > in
> > > > > > an
> > > > > > > > EAR
> > > > > > > > > > file.
> > > > > > > > > > > > When I deploy the EAR file I receive an exception
that
> > the
> > > > > > driver
> > > > > > > > > > cannot be
> > > > > > > > > > > > located (ClassNotFoundException).
> > > > > > > > > > > > Isn't it possible to provide a driver with my WAR
> > archive?
> > > > > > > > > > > > I'm using TomEE WebProfile 7.0.3.
> > > > > > > > > > > >
> > > > > > > > > > > > Thanks a lot,
> > > > > > > > > > > > Violeta
> > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > > > > > --
> > > > > > > > > > > > View this message in context:
> > http://tomee-openejb.979440.
> > > > > > > > > > > > n4.nabble.com/Driver-location-
> > > > in-an-EAR-file-tp4681675.html
> > > > > > > > > > > > Sent from the TomEE Users mailing list archive at
> > > > Nabble.com.
> > > > > > > > > > > >
> > > > > > > > > >
> > > > > > > >
> > > > > >
> > > >
> >

Reply via email to