Getting HeadlessException with jt400.jar driver

Solution Verified - Updated -

Environment

  • Red Hat JBoss Enterprise Application Platform (EAP)
    • 6.x

Issue

  • Getting following exception with jt400.jar driver :

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 AS400 driver has a property prompt which by default is true. Of course in a headless environment like an application server, one would need to set it to false.
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 prompt property is set in the datasource itself. With the AS400 driver 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 Properties tab.

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