Hemmels
Hemmels

Reputation: 892

When deploying application java.lang.IllegalArgumentException: [javax.sql.DataSource] is not an allowed property value type

I am attempting a simple .WAR deployment using payara6, but see the above error on deploying the war. I am using docker to deploy both the database and payara.

I am using mysql and connector_J 9.1.0. Here is the Containerfile for the payara service:

FROM payara/server-full:6.2024.12-jdk21
# Copy the MySQL Connector/J JAR file to Payara's lib directory
COPY --chown=payara:payara mysql-connector-j-9.1.0.jar /opt/payara/appserver/glassfish/domains/domain1/lib/
# Start the domain, use verbose logging and keep the container running
CMD ["sh", "-c", "asadmin start-domain -v && tail -f /dev/null"]

Here is the full stack trace of the error I am seeing:

|SEVERE|Payara 6.2024.12|jakarta.enterprise.web.core|_ThreadID=173;_ThreadName=admin-thread-pool::admin-listener(3);_TimeMillis=1735696457460;_LevelValue=1000;_MessageID=AS-WEB-CORE-00108;|
  ContainerBase.addChild: start:
  org.apache.catalina.LifecycleException: java.lang.IllegalArgumentException: [javax.sql.DataSource] is not an allowed property value type
        at org.apache.catalina.core.StandardContext.start(StandardContext.java:5711)
        at com.sun.enterprise.web.WebModule.start(WebModule.java:619)
        at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:982)
        at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:965)
        at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:694)
        at com.sun.enterprise.web.WebContainer.loadWebModule(WebContainer.java:1816)
        at com.sun.enterprise.web.WebContainer.loadWebModule(WebContainer.java:1568)
        at com.sun.enterprise.web.WebApplication.start(WebApplication.java:107)
        at org.glassfish.internal.data.EngineRef.start(EngineRef.java:123)
        at org.glassfish.internal.data.ModuleInfo.start(ModuleInfo.java:292)
        at org.glassfish.internal.data.ApplicationInfo.start(ApplicationInfo.java:361)
        at com.sun.enterprise.v3.server.ApplicationLifecycle.initialize(ApplicationLifecycle.java:633)
        at org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:574)
        at com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:556)
        at com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:552)
        at java.base/java.security.AccessController.doPrivileged(AccessController.java:400)
        at java.base/javax.security.auth.Subject.doAs(Subject.java:453)
        at com.sun.enterprise.v3.admin.CommandRunnerImpl$2.execute(CommandRunnerImpl.java:551)
        at com.sun.enterprise.v3.admin.CommandRunnerImpl$3.run(CommandRunnerImpl.java:582)
        at com.sun.enterprise.v3.admin.CommandRunnerImpl$3.run(CommandRunnerImpl.java:574)
        at java.base/java.security.AccessController.doPrivileged(AccessController.java:400)
        at java.base/javax.security.auth.Subject.doAs(Subject.java:453)
        at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:573)
        at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1497)
        at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1879)
        at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1755)
        at org.glassfish.admin.rest.utils.ResourceUtil.runCommand(ResourceUtil.java:272)
        at org.glassfish.admin.rest.utils.ResourceUtil.runCommand(ResourceUtil.java:240)
        at org.glassfish.admin.rest.utils.ResourceUtil.runCommand(ResourceUtil.java:294)
        at org.glassfish.admin.rest.resources.TemplateListOfResource.createResource(TemplateListOfResource.java:136)
        at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
        at java.base/java.lang.reflect.Method.invoke(Method.java:580)
        at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:52)
        at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:146)
        at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:189)
        at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$ResponseOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:176)
        at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:93)
        at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:478)
        at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:400)
        at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:81)
        at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:274)
        at org.glassfish.jersey.internal.Errors$1.call(Errors.java:248)
        at org.glassfish.jersey.internal.Errors$1.call(Errors.java:244)
        at org.glassfish.jersey.internal.Errors.process(Errors.java:292)
        at org.glassfish.jersey.internal.Errors.process(Errors.java:274)
        at org.glassfish.jersey.internal.Errors.process(Errors.java:244)
        at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:266)
        at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:253)
        at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:696)
        at org.glassfish.jersey.grizzly2.httpserver.GrizzlyHttpContainer.service(GrizzlyHttpContainer.java:367)
        at org.glassfish.admin.rest.adapter.RestAdapter$2.service(RestAdapter.java:335)
        at org.glassfish.admin.rest.adapter.RestAdapter.service(RestAdapter.java:189)
        at org.glassfish.admin.rest.adapter.RestManagementAdapter.service(RestManagementAdapter.java:66)
        at com.sun.enterprise.v3.services.impl.ContainerMapper$HttpHandlerCallable.call(ContainerMapper.java:520)
        at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:217)
        at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:174)
        at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:153)
        at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:196)
        at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:88)
        at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:246)
        at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:178)
        at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:118)
        at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:96)
        at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:51)
        at org.glassfish.grizzly.portunif.PUFilter.handleRead(PUFilter.java:193)
        at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:88)
        at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:246)
        at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:178)
        at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:118)
        at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:96)
        at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:51)
        at org.glassfish.grizzly.portunif.PUFilter.handleRead(PUFilter.java:193)
        at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:88)
        at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:246)
        at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:178)
        at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:118)
        at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:96)
        at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:51)
        at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:510)
        at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:82)
        at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:83)
        at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:101)
        at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:535)
        at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:515)
        at java.base/java.lang.Thread.run(Thread.java:1583)
  Caused by: java.lang.IllegalArgumentException: [javax.sql.DataSource] is not an allowed property value type
        at com.sun.enterprise.deployment.ResourceReferenceDescriptor.checkType(ResourceReferenceDescriptor.java:577)
        at com.sun.enterprise.container.common.impl.ComponentEnvManagerImpl.addResourceReferences(ComponentEnvManagerImpl.java:512)
        at com.sun.enterprise.container.common.impl.ComponentEnvManagerImpl.addJNDIBindings(ComponentEnvManagerImpl.java:612)
        at com.sun.enterprise.container.common.impl.ComponentEnvManagerImpl.bindToComponentNamespace(ComponentEnvManagerImpl.java:196)
        at com.sun.enterprise.web.WebModuleContextConfig.start(WebModuleContextConfig.java:229)
        at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:339)
        at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:162)
        at org.apache.catalina.core.StandardContext.start(StandardContext.java:5708)
        ... 84 more

What would be the cause?

The only non-default operation I have done is create a JDBC connection pool:

General Settings
Pool Name:
mypool
Resource Type:
javax.sql.DataSource  
Datasource Classname:
com.mysql.cj.jdbc.MysqlDataSource
Driver Classname:
com.mysql.cj.jdbc.Driver

And an associated JDBC Resource. The pool shows "Ping Succeeded" when "Ping" from the mgmt portal.

Any help appreciated. The same error appears even if I don't create the JDBC pool and try and deploy my application anyway.

Upvotes: 0

Views: 57

Answers (1)

Hemmels
Hemmels

Reputation: 892

As expected this was an error in my application, specifically the META-INF/context.xml. I believe the url was incorrect in the Resource definition, and was thus being ignored. I also had a "id" element, which is not required.

My haste to consult StackOverflow was mainly because my payara wasn't showing any logging in my container, but this was a separate unrelated issue.

In summary, I was able to resolve with something akin to:

<Resource type="javax.sql.DataSource" 
    driverClassName="com.mysql.cj.jdbc.Driver"
    url="jdbc:mysql://172.0.0.1:3306/mydb"     
    username="user" 
    password="pass" 
    maxActive="20" 
    maxIdle="10" 
    maxWait="10000"/>

Upvotes: 0

Related Questions