Code where the problem occurs. try // START OF JTA TRANSACTION { Object o=new InitialContext().lookup("UserTransaction"); ut=(UserTransaction) PortableRemoteObject.narrow(o,UserTransaction.class); // ut = sessioncontext.getUserTransaction(); Debug.print("Value of ut is: " +ut); ut.begin(); try { loginidcon = ds.getConnection("rich", "password"); } catch(SQLException sqlex) { Throwable se = new ServletException("database error"); se.initCause(sqlex); System.err.println("SQLException in LoginPwdServlet. "); System.err.println(sqlex.getMessage()); } catch(UndeclaredThrowableException ex) { System.err.println("This is the exception"); System.err.println(ex.getMessage()); Throwable unex = ex.getCause(); unex.printStackTrace(); System.err.println("And the target excepiton is ..."); System.err.println(((java.lang.reflect.InvocationTargetException)unex).getTargetException()); System.err.println(unex.getMessage()); } try { ps = loginidcon.prepareStatement("Select USERNAME,PASSWORD " + "from PASSWORDID where USERID = ?",ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE); ps.setString(1, user); results = ps.executeQuery(); if (!results.next()) { // A matching USERNAME is not found in database Authentication = new Integer(0); System.err.println("User " + user + " not found."); } else { // Only returns the first match. PassWord = results.getString("PASSWORD"); String CheckPass = PassWord.trim(); if (CheckPass.equals(Pass)) Authentication = new Integer(1); // passwords mathch else { Authentication = new Integer(0); // wrong password System.err.println("Password doesn't match for " + user); } } } catch(SQLException sqlex) { System.err.println("SQLException in LoginPwdServlet. "); System.err.println(sqlex.getMessage()); } Debug.print("Value of ut is: " +ut); ut.commit(); // COMMIT THE JTA TRANSACTION } catch (Exception ext) // USER TRANSACTION CATCH { Debug.print("Exception in JTA Transaction in LoginPwdServlet" +ext.getMessage()); ext.printStackTrace(); { try { Debug.print("Value of ut is: " +ut); if (ut != null) ut.rollback(); } catch (SystemException syex) { Debug.print("Rollback Exception: " +syex.getMessage()); throw new EJBException ("Rollback failed: " + syex.getMessage()); } throw new EJBException("Transaction failed: " + ext.getMessage()); } } Glassfish Logfile with the stacktrace that I think has the most info. Timestamp Jan 25, 2012 20:33:46.200 Log Level WARNING Logger javax.enterprise.system.stream.err Name-Value Pairs _ThreadID=18;_ThreadName=httpSSLWorkerThread-35084-0;_RequestID=bdbfd51a-0fdd-4c57-9eb9-d6b0bb14e46b; Record Number 1596 Message ID java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java Complete Message 39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.postgresql.xa.PGXAConnection$ConnectionHandler.invoke(PGXAConnection.java:146) at $Proxy118.getClientInfo(Unknown Source) at com.sun.gjc.spi.jdbc40.ConnectionHolder40.getClientInfo(ConnectionHolder40.java:353) at com.sun.gjc.spi.jdbc40.ConnectionHolder40.init(ConnectionHolder40.java:81) at com.sun.gjc.spi.jdbc40.ConnectionHolder40.(ConnectionHolder40.java:72) at com.sun.gjc.spi.jdbc40.Jdbc40ObjectsFactory.getConnection(Jdbc40ObjectsFactory.java:51) at com.sun.gjc.spi.ManagedConnection.getConnection(ManagedConnection.java:329) at com.sun.enterprise.resource.ConnectorAllocator.fillInResourceObjects(ConnectorAllocator.java:155) at com.sun.enterprise.resource.AbstractResourcePool.getResource(AbstractResourcePool.java:517) at com.sun.enterprise.resource.PoolManagerImpl.getResourceFromPool(PoolManagerImpl.java:248) at com.sun.enterprise.resource.PoolManagerImpl.getResource(PoolManagerImpl.java:176) at com.sun.enterprise.connectors.ConnectionManagerImpl.internalGetConnection(ConnectionManagerImpl.java:337) at com.sun.enterprise.connectors.ConnectionManagerImpl.allocateConnection(ConnectionManagerImpl.java:235) at com.sun.enterprise.connectors.ConnectionManagerImpl.allocateConnection(ConnectionManagerImpl.java:165) at com.sun.enterprise.connectors.ConnectionManagerImpl.allocateConnection(ConnectionManagerImpl.java:158) at com.sun.gjc.spi.base.DataSource.getConnection(DataSource.java:130) at LoginPwdServlet.doPost(LoginPwdServlet.java:172) at javax.servlet.http.HttpServlet.service(HttpServlet.java:754) at javax.servlet.http.HttpServlet.service(HttpServlet.java:847) at org.apache.catalina.core.ApplicationFilterChain.servletService(ApplicationFilterChain.java:427) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:315) at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:287) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:218) at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:648) at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:593) at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:94) at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:98) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:222) at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:648) at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:593) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:587) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1093) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:166) at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:648) at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:593) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:587) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1093) at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:291) at com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.invokeAdapter(DefaultProcessorTask.java:666) at com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.doProcess(DefaultProcessorTask.java:597) at com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.process(DefaultProcessorTask.java:872) at com.sun.enterprise.web.connector.grizzly.DefaultReadTask.executeProcessorTask(DefaultReadTask.java:341) at com.sun.enterprise.web.connector.grizzly.DefaultReadTask.doTask(DefaultReadTask.java:263) at com.sun.enterprise.web.connector.grizzly.DefaultReadTask.doTask(DefaultReadTask.java:214) at com.sun.enterprise.web.portunif.PortUnificationPipeline$PUTask.doTask(PortUnificationPipeline.java:382) at com.sun.enterprise.web.connector.grizzly.TaskBase.run(TaskBase.java:264) at com.sun.enterprise.web.connector.grizzly.ssl.SSLWorkerThread.run(SSLWorkerThread.java:106) Caused by: java.lang.AbstractMethodError: org.postgresql.jdbc3.Jdbc3Connection.getClientInfo()Ljava/util/Properties; at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.postgresql.ds.jdbc23.AbstractJdbc23PooledConnection$ConnectionHandler.invoke(AbstractJdbc23PooledConnection.java:352) at $Proxy118.getClientInfo(Unknown Source) ... 51 more