Getting HeadlessException with jt400.jar driver
Environment
- Red Hat JBoss Enterprise Application Platform (EAP)
- 6.x
Issue
- Getting following exception with
jt400.jardriver :
WARN [org.jboss.jca.core.connectionmanager.pool.strategy.OnePool] (host-controller-connection-threads - 2) IJ000604: Throwable while attempting to get a new connection: null: javax.resource.ResourceException: Could not create connection
at org.jboss.jca.adapters.jdbc.local.LocalManagedConnectionFactory.getLocalManagedConnection(LocalManagedConnectionFactory.java:288) [ironjacamar-jdbc-1.0.23.1.Final-redhat-1.jar:1.0.23.1.Final-redhat-1]
at org.jboss.jca.adapters.jdbc.local.LocalManagedConnectionFactory.createManagedConnection(LocalManagedConnectionFactory.java:246) [ironjacamar-jdbc-1.0.23.1.Final-redhat-1.jar:1.0.23.1.Final-redhat-1]
at org.jboss.jca.core.connectionmanager.pool.mcp.SemaphoreArrayListManagedConnectionPool.createConnectionEventListener(SemaphoreArrayListManagedConnectionPool.java:788) [ironjacamar-core-impl-1.0.23.1.Final-redhat-1.jar:1.0.23.1.Final-redhat-1]
at org.jboss.jca.core.connectionmanager.pool.mcp.SemaphoreArrayListManagedConnectionPool.getConnection(SemaphoreArrayListManagedConnectionPool.java:344) [ironjacamar-core-impl-1.0.23.1.Final-redhat-1.jar:1.0.23.1.Final-redhat-1]
at org.jboss.jca.core.connectionmanager.pool.AbstractPool.getSimpleConnection(AbstractPool.java:404) [ironjacamar-core-impl-1.0.23.1.Final-redhat-1.jar:1.0.23.1.Final-redhat-1]
at org.jboss.jca.core.connectionmanager.pool.AbstractPool.getConnection(AbstractPool.java:372) [ironjacamar-core-impl-1.0.23.1.Final-redhat-1.jar:1.0.23.1.Final-redhat-1]
at org.jboss.jca.core.connectionmanager.pool.AbstractPool.internalTestConnection(AbstractPool.java:675) [ironjacamar-core-impl-1.0.23.1.Final-redhat-1.jar:1.0.23.1.Final-redhat-1]
at org.jboss.jca.core.connectionmanager.pool.strategy.OnePool.testConnection(OnePool.java:89) [ironjacamar-core-impl-1.0.23.1.Final-redhat-1.jar:1.0.23.1.Final-redhat-1]
at org.jboss.as.connector.subsystems.common.pool.PoolOperations$TestConnectionInPool.invokeCommandOn(PoolOperations.java:143) [jboss-as-connector-7.3.4.Final-redhat-1.jar:7.3.4.Final-redhat-1]
at org.jboss.as.connector.subsystems.common.pool.PoolOperations$1.execute(PoolOperations.java:82) [jboss-as-connector-7.3.4.Final-redhat-1.jar:7.3.4.Final-redhat-1]
at org.jboss.as.controller.AbstractOperationContext.executeStep(AbstractOperationContext.java:601) [jboss-as-controller-7.3.4.Final-redhat-1.jar:7.3.4.Final-redhat-1]
at org.jboss.as.controller.AbstractOperationContext.doCompleteStep(AbstractOperationContext.java:479) [jboss-as-controller-7.3.4.Final-redhat-1.jar:7.3.4.Final-redhat-1]
at org.jboss.as.controller.AbstractOperationContext.completeStepInternal(AbstractOperationContext.java:283) [jboss-as-controller-7.3.4.Final-redhat-1.jar:7.3.4.Final-redhat-1]
at org.jboss.as.controller.AbstractOperationContext.executeOperation(AbstractOperationContext.java:278) [jboss-as-controller-7.3.4.Final-redhat-1.jar:7.3.4.Final-redhat-1]
at org.jboss.as.controller.ModelControllerImpl.internalExecute(ModelControllerImpl.java:231) [jboss-as-controller-7.3.4.Final-redhat-1.jar:7.3.4.Final-redhat-1]
at org.jboss.as.controller.ModelControllerImpl.execute(ModelControllerImpl.java:137) [jboss-as-controller-7.3.4.Final-redhat-1.jar:7.3.4.Final-redhat-1]
at org.jboss.as.controller.remote.TransactionalProtocolOperationHandler$ExecuteRequestHandler.doExecute(TransactionalProtocolOperationHandler.java:147) [jboss-as-controller-7.3.4.Final-redhat-1.jar:7.3.4.Final-redhat-1]
at org.jboss.as.controller.remote.TransactionalProtocolOperationHandler$ExecuteRequestHandler$1.run(TransactionalProtocolOperationHandler.java:111) [jboss-as-controller-7.3.4.Final-redhat-1.jar:7.3.4.Final-redhat-1]
at org.jboss.as.controller.remote.TransactionalProtocolOperationHandler$ExecuteRequestHandler$1.run(TransactionalProtocolOperationHandler.java:107) [jboss-as-controller-7.3.4.Final-redhat-1.jar:7.3.4.Final-redhat-1]
at java.security.AccessController.doPrivileged(Native Method) [rt.jar:1.7.0_85]
at javax.security.auth.Subject.doAs(Subject.java:356) [rt.jar:1.7.0_85]
at org.jboss.as.controller.AccessAuditContext.doAs(AccessAuditContext.java:83) [jboss-as-controller-7.3.4.Final-redhat-1.jar:7.3.4.Final-redhat-1]
at org.jboss.as.controller.remote.TransactionalProtocolOperationHandler$ExecuteRequestHandler$2$1.run(TransactionalProtocolOperationHandler.java:127) [jboss-as-controller-7.3.4.Final-redhat-1.jar:7.3.4.Final-redhat-1]
at org.jboss.as.controller.remote.TransactionalProtocolOperationHandler$ExecuteRequestHandler$2$1.run(TransactionalProtocolOperationHandler.java:123) [jboss-as-controller-7.3.4.Final-redhat-1.jar:7.3.4.Final-redhat-1]
at java.security.AccessController.doPrivileged(Native Method) [rt.jar:1.7.0_85]
at org.jboss.as.controller.remote.TransactionalProtocolOperationHandler$ExecuteRequestHandler$2.execute(TransactionalProtocolOperationHandler.java:123) [jboss-as-controller-7.3.4.Final-redhat-1.jar:7.3.4.Final-redhat-1]
at org.jboss.as.protocol.mgmt.AbstractMessageHandler$2$1.doExecute(AbstractMessageHandler.java:283)
at org.jboss.as.protocol.mgmt.AbstractMessageHandler$AsyncTaskRunner.run(AbstractMessageHandler.java:504)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [rt.jar:1.7.0_85]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [rt.jar:1.7.0_85]
at java.lang.Thread.run(Thread.java:745) [rt.jar:1.7.0_85]
at org.jboss.threads.JBossThread.run(JBossThread.java:122) [jboss-threads-2.1.1.Final-redhat-1.jar:2.1.1.Final-redhat-1]
Caused by: java.awt.HeadlessException
at java.awt.GraphicsEnvironment.checkHeadless(GraphicsEnvironment.java:207) [rt.jar:1.7.0_85]
at java.awt.Window.<init>(Window.java:535) [rt.jar:1.7.0_85]
at java.awt.Frame.<init>(Frame.java:420) [rt.jar:1.7.0_85]
at java.awt.Frame.<init>(Frame.java:385) [rt.jar:1.7.0_85]
at com.ibm.as400.access.ToolboxSignonHandler.displayMessage(ToolboxSignonHandler.java:336)
at com.ibm.as400.access.ToolboxSignonHandler.displayMessage(ToolboxSignonHandler.java:323)
at com.ibm.as400.access.ToolboxSignonHandler.userIdUnknown(ToolboxSignonHandler.java:302)
at com.ibm.as400.access.AS400.promptSignon(AS400.java:2954)
at com.ibm.as400.access.AS400.signon(AS400.java:4209)
at com.ibm.as400.access.AS400.connectService(AS400.java:1336)
at com.ibm.as400.access.AS400JDBCConnection.setProperties(AS400JDBCConnection.java:3361)
at com.ibm.as400.access.AS400JDBCDriver.prepareConnection(AS400JDBCDriver.java:1419)
at com.ibm.as400.access.AS400JDBCDriver.initializeConnection(AS400JDBCDriver.java:1256)
at com.ibm.as400.access.AS400JDBCDriver.connect(AS400JDBCDriver.java:395)
at org.jboss.jca.adapters.jdbc.local.LocalManagedConnectionFactory.getLocalManagedConnection(LocalManagedConnectionFactory.java:260) [ironjacamar-jdbc-1.0.23.1.Final-redhat-1.jar:1.0.23.1.Final-redhat-1]
Resolution
- The
AS400driver has a propertypromptwhich by default istrue. Of course in a headless environment like an application server, one would need to set it tofalse.
prompt : Specifies whether the user is prompted if a user name or password is needed to connect to the server. If a connection cannot be made without prompting the user, and this property is set to "false", then an attempt to connect will fail.
- The
promptproperty is set in the datasource itself. With theAS400driver this can just be appended to the URL itself.
jdbc:as400://$AS400_HOST;naming=sql;errors=full;libraries=$AS400_DBNAME;prompt=false
- Alternatively one can add this option directly from management console under datasource
Propertiestab.
This solution is part of Red Hat’s fast-track publication program, providing a huge library of solutions that Red Hat engineers have created while supporting our customers. To give you the knowledge you need the instant it becomes available, these articles may be presented in a raw and unedited form.
Comments