Getting HeadlessException with jt400.jar driver
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 propertyprompt
which 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
prompt
property is set in the datasource itself. With theAS400
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