Skip to content

Database Error on Create Account #7

@rsgallus

Description

@rsgallus

A database error occurs when attempting to create a new user. The following code receives input from an html form and attempts to create the new user account. The error occurs on the last line, during account.performAccountUpdate();.

// Create a new customer
account.performRegister();
account.getLoginInfo().setEmail(email);
account.getLoginInfo().setPassword(password);
		
// Updates the empty new Customer object created by performRegister.
account.getCustomer().setCustomerID(email);
account.getCustomer().setPassword(password);
account.getCustomer().setFirstName(firstName);
account.getCustomer().setLastName(lastName);
account.getCustomer().setAddr1(addr1);
account.getCustomer().setAddr2(addr2);
account.getCustomer().setAddrCity(city);
account.getCustomer().setAddrState(state);
account.getCustomer().setAddrZip(zipCode);
account.getCustomer().setPhone(phonenum);
		
// Sets the values for the new Customer.
account.performAccountUpdate();

The error stack trace is included below. The error can be easily replicated by clicking login, then create account, then completing the form.

Attempting to register a new user with email: test45@test.com
[ERROR   ] WTRN0062E: An illegal attempt to use multiple resources that have only one-phase capability has occurred within a global transaction.
[ERROR   ] J2CA0030E: Method enlist caught java.lang.IllegalStateException: Illegal attempt to enlist multiple 1PC XAResources
	at com.ibm.tx.jta.impl.RegisteredResources.enlistResource(RegisteredResources.java:441)
	at [internal classes]
	at com.ibm.websphere.samples.pbw.bean.CustomerMgr.createCustomer(CustomerMgr.java:80)
	at com.ibm.websphere.samples.pbw.bean.CustomerMgr$Proxy$_$$_WeldSubclass.createCustomer$$super(Unknown Source)
	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.jboss.weld.interceptor.proxy.TerminalAroundInvokeInvocationContext.proceedInternal(TerminalAroundInvokeInvocationContext.java:49)
	at [internal classes]
	at com.ibm.websphere.samples.pbw.bean.CustomerMgr$Proxy$_$$_WeldSubclass.createCustomer(Unknown Source)
	at com.ibm.websphere.samples.pbw.bean.CustomerMgr$Proxy$_$$_WeldClientProxy.createCustomer(Unknown Source)
	at com.ibm.websphere.samples.pbw.war.AccountBean.performAccountUpdate(AccountBean.java:86)
	at com.ibm.websphere.samples.pbw.war.AccountBean$Proxy$_$$_WeldClientProxy.performAccountUpdate(Unknown Source)
	at com.ibm.websphere.samples.pbw.bean.ApplicationResource.createCustomer(ApplicationResource.java:156)
	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 com.ibm.ws.jaxrs20.cdi.component.JaxRsFactoryImplicitBeanCDICustomizer.serviceInvoke(JaxRsFactoryImplicitBeanCDICustomizer.java:282)
	at [internal classes]
 while trying to enlist resources from DataSource jdbc/PlantsByWebSphereDataSource with the Transaction Manager for the current transaction, and threw a Exception.
[ERROR   ] WTRN0062E: An illegal attempt to use multiple resources that have only one-phase capability has occurred within a global transaction.
[ERROR   ] J2CA0030E: Method enlist caught java.lang.IllegalStateException: Illegal attempt to enlist multiple 1PC XAResources
	at com.ibm.tx.jta.impl.RegisteredResources.enlistResource(RegisteredResources.java:441)
	at [internal classes]
	at com.ibm.websphere.samples.pbw.bean.CustomerMgr.createCustomer(CustomerMgr.java:80)
	at com.ibm.websphere.samples.pbw.bean.CustomerMgr$Proxy$_$$_WeldSubclass.createCustomer$$super(Unknown Source)
	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.jboss.weld.interceptor.proxy.TerminalAroundInvokeInvocationContext.proceedInternal(TerminalAroundInvokeInvocationContext.java:49)
	at [internal classes]
	at com.ibm.websphere.samples.pbw.bean.CustomerMgr$Proxy$_$$_WeldSubclass.createCustomer(Unknown Source)
	at com.ibm.websphere.samples.pbw.bean.CustomerMgr$Proxy$_$$_WeldClientProxy.createCustomer(Unknown Source)
	at com.ibm.websphere.samples.pbw.war.AccountBean.performAccountUpdate(AccountBean.java:86)
	at com.ibm.websphere.samples.pbw.war.AccountBean$Proxy$_$$_WeldClientProxy.performAccountUpdate(Unknown Source)
	at com.ibm.websphere.samples.pbw.bean.ApplicationResource.createCustomer(ApplicationResource.java:156)
	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 com.ibm.ws.jaxrs20.cdi.component.JaxRsFactoryImplicitBeanCDICustomizer.serviceInvoke(JaxRsFactoryImplicitBeanCDICustomizer.java:282)
	at [internal classes]
 while trying to enlist resources from DataSource jdbc/PlantsByWebSphereDataSource with the Transaction Manager for the current transaction, and threw a Exception.
[WARNING ] CWWJP9991W: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.6.1.WAS-v20160106-a06c2b3): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: java.sql.SQLException: enlist: caught Exception
Error Code: 0
Call: INSERT INTO APP.CUSTOMER (CUSTOMERID, ADDR1, ADDR2, ADDRCITY, ADDRSTATE, ADDRZIP, FIRSTNAME, LASTNAME, PASSWORD, PHONE) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
	bind => [10 parameters bound]
Query: InsertObjectQuery(com.ibm.websphere.samples.pbw.jpa.Customer@db2375e)
[WARNING ] Application {http://bean.pbw.samples.websphere.ibm.com/}ApplicationResource has thrown exception, unwinding now
Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.6.1.WAS-v20160106-a06c2b3): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: java.sql.SQLException: enlist: caught Exception
Error Code: 0
Call: INSERT INTO APP.CUSTOMER (CUSTOMERID, ADDR1, ADDR2, ADDRCITY, ADDRSTATE, ADDRZIP, FIRSTNAME, LASTNAME, PASSWORD, PHONE) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
	bind => [10 parameters bound]
Query: InsertObjectQuery(com.ibm.websphere.samples.pbw.jpa.Customer@db2375e)
[WARNING ] Exception in handleFault on interceptor org.apache.cxf.jaxrs.interceptor.JAXRSDefaultFaultOutInterceptor@668dca6f
Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.6.1.WAS-v20160106-a06c2b3): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: java.sql.SQLException: enlist: caught Exception
Error Code: 0
Call: INSERT INTO APP.CUSTOMER (CUSTOMERID, ADDR1, ADDR2, ADDRCITY, ADDRSTATE, ADDRZIP, FIRSTNAME, LASTNAME, PASSWORD, PHONE) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
	bind => [10 parameters bound]
Query: InsertObjectQuery(com.ibm.websphere.samples.pbw.jpa.Customer@db2375e)
[ERROR   ] Error occurred during error handling, give up!
Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.6.1.WAS-v20160106-a06c2b3): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: java.sql.SQLException: enlist: caught Exception
Error Code: 0
Call: INSERT INTO APP.CUSTOMER (CUSTOMERID, ADDR1, ADDR2, ADDRCITY, ADDRSTATE, ADDRZIP, FIRSTNAME, LASTNAME, PASSWORD, PHONE) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
	bind => [10 parameters bound]
Query: InsertObjectQuery(com.ibm.websphere.samples.pbw.jpa.Customer@db2375e)
[ERROR   ] SRVE0777E: Exception thrown by application class 'org.apache.cxf.interceptor.AbstractFaultChainInitiatorObserver.onMessage:116'
java.lang.RuntimeException: org.apache.cxf.interceptor.Fault: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.6.1.WAS-v20160106-a06c2b3): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: java.sql.SQLException: enlist: caught Exception
Error Code: 0
Call: INSERT INTO APP.CUSTOMER (CUSTOMERID, ADDR1, ADDR2, ADDRCITY, ADDRSTATE, ADDRZIP, FIRSTNAME, LASTNAME, PASSWORD, PHONE) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
	bind => [10 parameters bound]
Query: InsertObjectQuery(com.ibm.websphere.samples.pbw.jpa.Customer@db2375e)
	at org.apache.cxf.interceptor.AbstractFaultChainInitiatorObserver.onMessage(AbstractFaultChainInitiatorObserver.java:116)
	at [internal classes]
Caused by: org.apache.cxf.interceptor.Fault: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.6.1.WAS-v20160106-a06c2b3): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: java.sql.SQLException: enlist: caught Exception
Error Code: 0
Call: INSERT INTO APP.CUSTOMER (CUSTOMERID, ADDR1, ADDR2, ADDRCITY, ADDRSTATE, ADDRZIP, FIRSTNAME, LASTNAME, PASSWORD, PHONE) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
	bind => [10 parameters bound]
Query: InsertObjectQuery(com.ibm.websphere.samples.pbw.jpa.Customer@db2375e)
	at org.apache.cxf.service.invoker.AbstractInvoker.createFault(AbstractInvoker.java:163)
	... 1 more
Caused by: javax.persistence.PersistenceException: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.6.1.WAS-v20160106-a06c2b3): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: java.sql.SQLException: enlist: caught Exception
Error Code: 0
Call: INSERT INTO APP.CUSTOMER (CUSTOMERID, ADDR1, ADDR2, ADDRCITY, ADDRSTATE, ADDRZIP, FIRSTNAME, LASTNAME, PASSWORD, PHONE) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
	bind => [10 parameters bound]
Query: InsertObjectQuery(com.ibm.websphere.samples.pbw.jpa.Customer@db2375e)
	at org.eclipse.persistence.internal.jpa.EntityManagerImpl.flush(EntityManagerImpl.java:879)
	at [internal classes]
	at com.ibm.websphere.samples.pbw.bean.CustomerMgr.createCustomer(CustomerMgr.java:80)
	at com.ibm.websphere.samples.pbw.bean.CustomerMgr$Proxy$_$$_WeldSubclass.createCustomer$$super(Unknown Source)
	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.jboss.weld.interceptor.proxy.TerminalAroundInvokeInvocationContext.proceedInternal(TerminalAroundInvokeInvocationContext.java:49)
	at [internal classes]
	at com.ibm.websphere.samples.pbw.bean.CustomerMgr$Proxy$_$$_WeldSubclass.createCustomer(Unknown Source)
	at com.ibm.websphere.samples.pbw.bean.CustomerMgr$Proxy$_$$_WeldClientProxy.createCustomer(Unknown Source)
	at com.ibm.websphere.samples.pbw.war.AccountBean.performAccountUpdate(AccountBean.java:86)
	at com.ibm.websphere.samples.pbw.war.AccountBean$Proxy$_$$_WeldClientProxy.performAccountUpdate(Unknown Source)
	at com.ibm.websphere.samples.pbw.bean.ApplicationResource.createCustomer(ApplicationResource.java:156)
	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 com.ibm.ws.jaxrs20.cdi.component.JaxRsFactoryImplicitBeanCDICustomizer.serviceInvoke(JaxRsFactoryImplicitBeanCDICustomizer.java:282)
	... 1 more
Caused by: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.6.1.WAS-v20160106-a06c2b3): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: java.sql.SQLException: enlist: caught Exception
Error Code: 0
Call: INSERT INTO APP.CUSTOMER (CUSTOMERID, ADDR1, ADDR2, ADDRCITY, ADDRSTATE, ADDRZIP, FIRSTNAME, LASTNAME, PASSWORD, PHONE) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
	bind => [10 parameters bound]
Query: InsertObjectQuery(com.ibm.websphere.samples.pbw.jpa.Customer@db2375e)
	at org.eclipse.persistence.exceptions.DatabaseException.sqlException(DatabaseException.java:340)
	... 20 more
Caused by: java.sql.SQLException: enlist: caught Exception
	at com.ibm.ws.rsadapter.AdapterUtil.toSQLException(AdapterUtil.java:1114)
	... 20 more
Caused by: javax.resource.ResourceException: enlist: caught Exception
	at com.ibm.ejs.j2c.LocalTransactionWrapper.enlist(LocalTransactionWrapper.java:585)
	... 20 more
Caused by: java.lang.IllegalStateException: Illegal attempt to enlist multiple 1PC XAResources
	at com.ibm.tx.jta.impl.RegisteredResources.enlistResource(RegisteredResources.java:441)
	... 20 more

[ERROR   ] SRVE0315E: An exception occurred: java.lang.Throwable: java.lang.RuntimeException: org.apache.cxf.interceptor.Fault: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.6.1.WAS-v20160106-a06c2b3): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: java.sql.SQLException: enlist: caught Exception
Error Code: 0
Call: INSERT INTO APP.CUSTOMER (CUSTOMERID, ADDR1, ADDR2, ADDRCITY, ADDRSTATE, ADDRZIP, FIRSTNAME, LASTNAME, PASSWORD, PHONE) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
	bind => [10 parameters bound]
Query: InsertObjectQuery(com.ibm.websphere.samples.pbw.jpa.Customer@db2375e)
	at com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:4913)
	at [internal classes]
Caused by: java.lang.RuntimeException: org.apache.cxf.interceptor.Fault: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.6.1.WAS-v20160106-a06c2b3): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: java.sql.SQLException: enlist: caught Exception
Error Code: 0
Call: INSERT INTO APP.CUSTOMER (CUSTOMERID, ADDR1, ADDR2, ADDRCITY, ADDRSTATE, ADDRZIP, FIRSTNAME, LASTNAME, PASSWORD, PHONE) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
	bind => [10 parameters bound]
Query: InsertObjectQuery(com.ibm.websphere.samples.pbw.jpa.Customer@db2375e)
	at org.apache.cxf.interceptor.AbstractFaultChainInitiatorObserver.onMessage(AbstractFaultChainInitiatorObserver.java:116)
	... 1 more
Caused by: org.apache.cxf.interceptor.Fault: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.6.1.WAS-v20160106-a06c2b3): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: java.sql.SQLException: enlist: caught Exception
Error Code: 0
Call: INSERT INTO APP.CUSTOMER (CUSTOMERID, ADDR1, ADDR2, ADDRCITY, ADDRSTATE, ADDRZIP, FIRSTNAME, LASTNAME, PASSWORD, PHONE) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
	bind => [10 parameters bound]
Query: InsertObjectQuery(com.ibm.websphere.samples.pbw.jpa.Customer@db2375e)
	at org.apache.cxf.service.invoker.AbstractInvoker.createFault(AbstractInvoker.java:163)
	... 1 more
Caused by: javax.persistence.PersistenceException: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.6.1.WAS-v20160106-a06c2b3): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: java.sql.SQLException: enlist: caught Exception
Error Code: 0
Call: INSERT INTO APP.CUSTOMER (CUSTOMERID, ADDR1, ADDR2, ADDRCITY, ADDRSTATE, ADDRZIP, FIRSTNAME, LASTNAME, PASSWORD, PHONE) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
	bind => [10 parameters bound]
Query: InsertObjectQuery(com.ibm.websphere.samples.pbw.jpa.Customer@db2375e)
	at org.eclipse.persistence.internal.jpa.EntityManagerImpl.flush(EntityManagerImpl.java:879)
	at [internal classes]
	at com.ibm.websphere.samples.pbw.bean.CustomerMgr.createCustomer(CustomerMgr.java:80)
	at com.ibm.websphere.samples.pbw.bean.CustomerMgr$Proxy$_$$_WeldSubclass.createCustomer$$super(Unknown Source)
	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.jboss.weld.interceptor.proxy.TerminalAroundInvokeInvocationContext.proceedInternal(TerminalAroundInvokeInvocationContext.java:49)
	at [internal classes]
	at com.ibm.websphere.samples.pbw.bean.CustomerMgr$Proxy$_$$_WeldSubclass.createCustomer(Unknown Source)
	at com.ibm.websphere.samples.pbw.bean.CustomerMgr$Proxy$_$$_WeldClientProxy.createCustomer(Unknown Source)
	at com.ibm.websphere.samples.pbw.war.AccountBean.performAccountUpdate(AccountBean.java:86)
	at com.ibm.websphere.samples.pbw.war.AccountBean$Proxy$_$$_WeldClientProxy.performAccountUpdate(Unknown Source)
	at com.ibm.websphere.samples.pbw.bean.ApplicationResource.createCustomer(ApplicationResource.java:156)
	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 com.ibm.ws.jaxrs20.cdi.component.JaxRsFactoryImplicitBeanCDICustomizer.serviceInvoke(JaxRsFactoryImplicitBeanCDICustomizer.java:282)
	... 1 more
Caused by: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.6.1.WAS-v20160106-a06c2b3): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: java.sql.SQLException: enlist: caught Exception
Error Code: 0
Call: INSERT INTO APP.CUSTOMER (CUSTOMERID, ADDR1, ADDR2, ADDRCITY, ADDRSTATE, ADDRZIP, FIRSTNAME, LASTNAME, PASSWORD, PHONE) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
	bind => [10 parameters bound]
Query: InsertObjectQuery(com.ibm.websphere.samples.pbw.jpa.Customer@db2375e)
	at org.eclipse.persistence.exceptions.DatabaseException.sqlException(DatabaseException.java:340)
	... 20 more
Caused by: java.sql.SQLException: enlist: caught Exception
	at com.ibm.ws.rsadapter.AdapterUtil.toSQLException(AdapterUtil.java:1114)
	... 20 more
Caused by: javax.resource.ResourceException: enlist: caught Exception
	at com.ibm.ejs.j2c.LocalTransactionWrapper.enlist(LocalTransactionWrapper.java:585)
	... 20 more
Caused by: java.lang.IllegalStateException: Illegal attempt to enlist multiple 1PC XAResources
	at com.ibm.tx.jta.impl.RegisteredResources.enlistResource(RegisteredResources.java:441)
	... 20 more

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions