[ https://issues.apache.org/jira/browse/TOMEE-4226?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Richard Zowalla closed TOMEE-4226. ---------------------------------- Fix Version/s: (was: 10.0.0-M1) (was: 8.0.16) (was: 9.1.1) Resolution: Fixed > DataSource definition fails when @DataSourceDefinition doesn't define url > property > ---------------------------------------------------------------------------------- > > Key: TOMEE-4226 > URL: https://issues.apache.org/jira/browse/TOMEE-4226 > Project: TomEE > Issue Type: Bug > Components: TomEE Core Server > Affects Versions: 8.0.15, 9.1.0 > Environment: windows 11 > tomEE 8.0.15 webprofile > jdk 8 > hibernate 5.6.15 > Reporter: Stephane Talbot > Assignee: Richard Zowalla > Priority: Minor > Fix For: 10.0.0 > > Time Spent: 1h > Remaining Estimate: 0h > > When you define a data-source using_ @DataSourceDefinition_ or using > <data-source> tag in standard descriptor, if the url property is not defined, > the creation of the data-source fails. > Example of non-working _DataSourceDefinition_: (same result with > _DataSourceDefinition_ annotation or _data-source_ tag) > {code:java} > @DataSourceDefinition ( > name = "java:app/env/jdbc/MyDataSource", > className = "org.postgresql.ds.PGPoolingDataSource", > user = "myuser", > password = "mypassword", > serverName = "localhost", > portNumber = 5432, > databaseName = "mydb" > ) > {code} > {code:xml} > <data-source> > <name>java:app/env/jdbc/MyDataSource</name> > <class-name>org.postgresql.ds.PGPoolingDataSource</class-name> > <server-name>localhost</server-name> > <port-number>5432</port-number> > <database-name>mydb</database-name> > <user>myuser</user> > <password>mypassword</password> > </data-source> > {code} > Example of working _DataSourceDefinition_ > {code:java} > @DataSourceDefinition ( > name = "java:app/env/jdbc/MyDataSource", > className = "org.postgresql.ds.PGPoolingDataSource", > user = "myuser", > password = "mypassword", > url = "jdbc:postgresql://localhost:5432/mydb" > ) > {code} > {code:xml} > <data-source> > <name>java:app/env/jdbc/MyDataSource</name> > <class-name>org.postgresql.ds.PGPoolingDataSource</class-name> > <url>jdbc:postgresql://localhost:5432/mydb</url> > <user>myuser</user> > <password>mypassword</password> > </data-source> > {code} > TomEE error logs: > {code:none} > GRAVE: Unable to deploy collapsed ear in war > StandardEngine[Catalina].StandardHost[localhost].StandardContext[/Thermometres] > org.apache.xbean.recipe.ConstructionException: Error invoking factory method: > public static javax.sql.CommonDataSource > org.apache.openejb.resource.jdbc.DataSourceFactory.create(java.lang.String,boolean,java.lang.Class,java.lang.String,org.apache.openejb.util.Duration,org.apache.openejb.util.Duration,org.apache.openejb.util.Duration,boolean) > throws > java.lang.IllegalAccessException,java.lang.InstantiationException,java.io.IOException > at > org.apache.xbean.recipe.ReflectionUtil$StaticFactory.create(ReflectionUtil.java:1019) > at > org.apache.xbean.recipe.ObjectRecipe.internalCreate(ObjectRecipe.java:279) > 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:3178) > at > org.apache.openejb.assembler.classic.Assembler.createResource(Assembler.java:3013) > 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:2215) > at > org.apache.openejb.config.AutoConfig.processApplicationResources(AutoConfig.java:1048) > at org.apache.openejb.config.AutoConfig.deploy(AutoConfig.java:192) > at > org.apache.openejb.config.ConfigurationFactory$Chain.deploy(ConfigurationFactory.java:420) > at > org.apache.openejb.config.ConfigurationFactory.configureApplication(ConfigurationFactory.java:1033) > at > org.apache.tomee.catalina.TomcatWebAppBuilder.startInternal(TomcatWebAppBuilder.java:1318) > at > org.apache.tomee.catalina.TomcatWebAppBuilder.configureStart(TomcatWebAppBuilder.java:1162) > at > org.apache.tomee.catalina.GlobalListenerSupport.lifecycleEvent(GlobalListenerSupport.java:134) > at > org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:123) > at > org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:4852) > at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) > at > org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1332) > at > org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1322) > at java.util.concurrent.FutureTask.run(FutureTask.java:266) > at > org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75) > at > java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:134) > at > org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:871) > at > org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:795) > at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) > at > org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1332) > at > org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1322) > at java.util.concurrent.FutureTask.run(FutureTask.java:266) > at > org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75) > at > java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:134) > at > org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:871) > at > org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:249) > at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) > at > org.apache.catalina.core.StandardService.startInternal(StandardService.java:428) > at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) > at > org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:917) > at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) > at org.apache.catalina.startup.Catalina.start(Catalina.java:772) > 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:498) > at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:347) > at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:478) > Caused by: org.apache.xbean.recipe.ConstructionException: Error setting > property: public void > org.postgresql.ds.common.BaseDataSource.setUrl(java.lang.String) > at > org.apache.xbean.recipe.ObjectRecipe.setProperty(ObjectRecipe.java:528) > at > org.apache.xbean.recipe.ObjectRecipe.setProperties(ObjectRecipe.java:378) > at > org.apache.xbean.recipe.ObjectRecipe.internalCreate(ObjectRecipe.java:289) > at org.apache.xbean.recipe.AbstractRecipe.create(AbstractRecipe.java:96) > at org.apache.xbean.recipe.AbstractRecipe.create(AbstractRecipe.java:61) > at org.apache.xbean.recipe.AbstractRecipe.create(AbstractRecipe.java:49) > at > org.apache.openejb.resource.jdbc.DataSourceFactory.create(DataSourceFactory.java:181) > 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:498) > at > org.apache.xbean.recipe.ReflectionUtil$StaticFactory.create(ReflectionUtil.java:1009) > ... 45 more > Caused by: java.lang.IllegalArgumentException: URL invalid > jdbc:hsqldb:file:C:\local\apache-tomee-webprofile-8.0.15\data\hsqldb\hsqldb > at > org.postgresql.ds.common.BaseDataSource.setUrl(BaseDataSource.java:1133) > 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:498) > at > org.apache.xbean.recipe.ObjectRecipe$MethodMember.setValue(ObjectRecipe.java:648) > at > org.apache.xbean.recipe.ObjectRecipe.setProperty(ObjectRecipe.java:519) > ... 56 more > {code} > You can see that it try to create the Postgresql DataSource using TomEE > default hsqldb datasource url instead of the of the correct one. -- This message was sent by Atlassian Jira (v8.20.10#820010)