[ 
https://issues.apache.org/jira/browse/TOMEE-4226?focusedWorklogId=867707&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-867707
 ]

ASF GitHub Bot logged work on TOMEE-4226:
-----------------------------------------

                Author: ASF GitHub Bot
            Created on: 27/Jun/23 08:52
            Start Date: 27/Jun/23 08:52
    Worklog Time Spent: 10m 
      Work Description: rmannibucau commented on PR #1059:
URL: https://github.com/apache/tomee/pull/1059#issuecomment-1609073330

   if it helps, my two cents would be it can be worth adding a 
DataSourceDefinitionUrlBuild openejb event since these guessed URL are rarely 
prod friendly urls so firing the event with the data we have (from the annot) 
and allowing to set an URL can be a way to enable users to customize the way 
the url is built (plugin like) then supporting by default all world patterns 
become less important since there are several cases we just have to do a choice 
so 50% it can be wrong ;).




Issue Time Tracking
-------------------

    Worklog Id:     (was: 867707)
    Time Spent: 0.5h  (was: 20m)

> 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, 8.0.16, 9.1.1
>
>          Time Spent: 0.5h
>  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)

Reply via email to