We've been running into a semi-recurring problem with connection
pool corruption in the UnboundID stuff under Fortress. An example
of the stack dump is below. It looks like there's some stuff you
can do with UnboundID that might help in providing a graceful
recovery rather than us bouncing the app (which is the only fix we
have now). Before I dig too deep I was wondering if you had seen
this behavior and might already have a resolution. I'm willing to
put some time into fixing this if it's something new. Thanks The code: public FortressUser getFortressUserByUserName(String userName) { FortressUser userIn = new FortressUser(); userIn.setUserId(userName); FortressUser userOut = null; LOGGER.info("Retrieving user with userId: " + userName); // Get the user ReviewMgr reviewMgr; try { reviewMgr = ReviewMgrFactory.createInstance(""); userOut = new FortressUser(reviewMgr.readUser(userIn)); //Line that's blowing up } catch (SecurityException e) { LOGGER.error("The ReviewMgr could retrieve the requested user"); } // Output the user's data to the log if(userOut != null) { LOGGER.info(userOut.toString()); } else { LOGGER.info("userOut is null"); } return userOut; } The stack trace: 2014-02-20 10:53:09,850 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/fps-web].[FacesServlet]] (ajp-/0.0.0.0:8009-506) JBWEB000236: Servlet.service() for servlet FacesServlet threw exception: LDAPSDKUsageException(message='A null object was provided where a non-null object is required (non-null index 0). Thread stack trace: getStackTrace(Thread.java:1568) / ensureNotNull(Validator.java:119) / connect(LDAPConnection.java:716) / connect(LDAPConnection.java:681) / connect(LDAPConnection.java:459) / reconnect(LDAPConnection.java:626) / checkConnection(PoolMgr.java:592) / getConnection(PoolMgr.java:260) / getAdminConnection(UnboundIdDataProvider.java:1192) / getUser(UserDAO.java:747) / read(UserP.java:194) / readUser(ReviewMgrImpl.java:263) / getFortressUserByUserName(FortressServiceEjb.java:172) / getRoles(FpsScimProvider.java:595) / findUsers(FpsScimProvider.java:274) / findPerson(PersonController.java:1079) / loadAuthPerson(PersonController.java:947) / loadAuthPerson(PersonController$Proxy$_$$_WeldClientProxy.java) / invoke(null) / invoke(DelegatingMethodAccessorImpl.java:43) / invoke(Method.java:606) / invokeMethod(BeanELResolver.java:735) / invoke(BeanELResolver.java:467) / invoke(CompositeELResolver.java:246) / getValue(AstValue.java:156) / getValue(ValueExpressionImpl.java:189) / getValue(WeldValueExpression.java:50) / writeText(ELText.java:227) / writeText(ELText.java:150) / write(TextInstruction.java:85) / encodeBegin(UIInstructions.java:82) / encodeAll(UILeaf.java:183) / encodeAll(UIComponent.java:1782) / encodeAll(UIComponent.java:1782) / renderView(FaceletViewHandlingStrategy.java:439) / renderView(MultiViewHandler.java:124) / renderView(ViewHandlerWrapper.java:286) / execute(RenderResponsePhase.java:120) / doPhase(Phase.java:101) / render(LifecycleImpl.java:139) / service(FacesServlet.java:594) / internalDoFilter(ApplicationFilterChain.java:295) / doFilter(ApplicationFilterChain.java:214) / invoke(StandardWrapperValve.java:230) / invoke(StandardContextValve.java:149) / event(JBossWebContext.java:91) / invoke(JBossWebContext.java:72) / invoke(SecurityContextAssociationValve.java:169) / invoke(StandardHostValve.java:145) / invoke(ErrorReportValve.java:97) / invoke(StandardEngineValve.java:102) / service(CoyoteAdapter.java:336) / process(AjpProcessor.java:488) / process(AjpProtocol.java:420) / run(JIoEndpoint.java:920) / run(Thread.java:724)') at com.unboundid.util.Validator.ensureNotNull(Validator.java:119) [unboundid-ldapsdk-2.3.3.jar:2.3.3] at com.unboundid.ldap.sdk.LDAPConnection.connect(LDAPConnection.java:716) [unboundid-ldapsdk-2.3.3.jar:2.3.3] at com.unboundid.ldap.sdk.LDAPConnection.connect(LDAPConnection.java:681) [unboundid-ldapsdk-2.3.3.jar:2.3.3] at com.unboundid.ldap.sdk.migrate.ldapjdk.LDAPConnection.connect(LDAPConnection.java:459) [unboundid-ldapsdk-2.3.3.jar:2.3.3] at com.unboundid.ldap.sdk.migrate.ldapjdk.LDAPConnection.reconnect(LDAPConnection.java:626) [unboundid-ldapsdk-2.3.3.jar:2.3.3] at us.jts.fortress.ldap.PoolMgr.checkConnection(PoolMgr.java:592) [fortress-1.0-RC33.jar:] at us.jts.fortress.ldap.PoolMgr.getConnection(PoolMgr.java:260) [fortress-1.0-RC33.jar:] at us.jts.fortress.ldap.UnboundIdDataProvider.getAdminConnection(UnboundIdDataProvider.java:1192) [fortress-1.0-RC33.jar:] at us.jts.fortress.rbac.dao.unboundid.UserDAO.getUser(UserDAO.java:747) [fortress-1.0-RC33.jar:] at us.jts.fortress.rbac.UserP.read(UserP.java:194) [fortress-1.0-RC33.jar:] at us.jts.fortress.rbac.ReviewMgrImpl.readUser(ReviewMgrImpl.java:263) [fortress-1.0-RC33.jar:] at edu.psu.javaee.applications.fpsscim.ejbs.FortressServiceEjb.getFortressUserByUserName(FortressServiceEjb.java:172) [classes:] at edu.psu.javaee.applications.fpsscim.FpsScimProvider.getRoles(FpsScimProvider.java:595) [classes:] -- Shawn Eion Smith Software Engineering Manager/Research Engineer Software Engineering Solutions Applied Information Technology Penn State University shawn.eion.smith@psu.edu 814-867-3208 |