cancel
Showing results for 
Search instead for 
Did you mean: 

Getting SQLException on DB Login, but Report Runs?????

Former Member
0 Kudos

On all of our JRC-enabled Crystal reports, I'm getting the same SQLException error thrown, however, the report runs OK in most cases. In longer running reports, the user is getting weird JSF state exceptions, HTTP 500 errors, etc. etc. When I look at the log files for our web app, the below error is showing constantly. Any ideas what it means, please?

01-05 15:06:58 ERROR [TP-Processor3] (datainterface:?) - com.crystaldecisions.reports.reportdefinition.datainterface.h: Logon Error: Null user or password not supported in THIN driver

01-05 15:07:06 ERROR [TP-Processor3] (reportdefinition:?) - Report printer was not valid, switching to default printer.

01-05 15:07:33 ERROR [TP-Processor3] (reportdefinition:?) - Report printer was not valid, switching to default printer.

01-05 15:09:35 ERROR [TP-Processor3] (reportdefinition:?) - Report printer was not valid, switching to default printer.

01-05 15:09:35 ERROR [TP-Processor3] (datainterface:?) - Failed to open connection (Connection: databaseType=JDBC (JNDI) serverName=jdbc:oracle:thin:@pabaix08:1521:P007 state=closed databaseDriverName=crdb_jdbc.dll).

com.crystaldecisions.reports.queryengine.bl: Logon Error: Null user or password not supported in THIN driver

at com.crystaldecisions.reports.queryengine.driverImpl.o.if(Unknown Source)

at com.crystaldecisions.reports.queryengine.av.new(Unknown Source)

at com.crystaldecisions.reports.queryengine.av.byte(Unknown Source)

at com.crystaldecisions.reports.reportdefinition.datainterface.b.a(Unknown Source)

at com.crystaldecisions.reports.reportdefinition.datainterface.b.a(Unknown Source)

at com.crystaldecisions.reports.reportdefinition.datainterface.b.a(Unknown Source)

at com.crystaldecisions.reports.reportdefinition.datainterface.b.if(Unknown Source)

at com.crystaldecisions.reports.reportdefinition.datainterface.j.a(Unknown Source)

at com.businessobjects.reports.sdk.b.e.a(Unknown Source)

at com.businessobjects.reports.sdk.b.e.if(Unknown Source)

at com.businessobjects.reports.sdk.JRCCommunicationAdapter.request(Unknown Source)

at com.crystaldecisions.proxy.remoteagent.y.a(Unknown Source)

at com.crystaldecisions.proxy.remoteagent.r.a(Unknown Source)

at com.crystaldecisions.sdk.occa.report.application.cf.a(Unknown Source)

at com.crystaldecisions.sdk.occa.report.application.DatabaseController.getConnectionInfos(Unknown Source)

at com.crystaldecisions.sdk.occa.report.application.ReportSource.getPromptDatabaseLogOnInfos(Unknown Source)

at com.crystaldecisions.sdk.occa.report.application.AdvancedReportSource.getPromptDatabaseLogOnInfos(Unknown Source)

at com.crystaldecisions.sdk.occa.report.application.NonDCPAdvancedReportSource.getPromptDatabaseLogOnInfos(Unknown Source)

at com.crystaldecisions.report.web.component.h.a(Unknown Source)

at com.crystaldecisions.report.web.component.h.try(Unknown Source)

at com.crystaldecisions.report.web.component.o.goto(Unknown Source)

at com.crystaldecisions.report.web.event.ac.a(Unknown Source)

at com.crystaldecisions.report.web.event.b2.a(Unknown Source)

at com.crystaldecisions.report.web.event.b7.broadcast(Unknown Source)

at com.crystaldecisions.report.web.event.av.a(Unknown Source)

at com.crystaldecisions.report.web.jsf.ViewerHtmlRenderer.encodeEnd(Unknown Source)

at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:712)

at javax.faces.webapp.UIComponentTag.encodeEnd(UIComponentTag.java:616)

at javax.faces.webapp.UIComponentTag.doEndTag(UIComponentTag.java:539)

at org.apache.jsp.jsp.ReportViewer_jsp._jspx_meth_v_005freportPageViewer_005f0(ReportViewer_jsp.java:187)

at org.apache.jsp.jsp.ReportViewer_jsp._jspx_meth_h_005fform_005f0(ReportViewer_jsp.java:141)

at org.apache.jsp.jsp.ReportViewer_jsp._jspx_meth_f_005fview_005f0(ReportViewer_jsp.java:107)

at org.apache.jsp.jsp.ReportViewer_jsp._jspService(ReportViewer_jsp.java:72)

at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:393)

at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)

at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:654)

at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:445)

at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:379)

at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:292)

at com.sun.faces.context.ExternalContextImpl.dispatch(ExternalContextImpl.java:322)

at com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:147)

at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:87)

at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:200)

at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:117)

at javax.faces.webapp.FacesServlet.service(FacesServlet.java:198)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

at org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:147)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)

at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)

at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263)

at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:190)

at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:283)

at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:767)

at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:697)

at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:889)

at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:690)

at java.lang.Thread.run(Thread.java:595)

Caused by: java.sql.SQLException: Null user or password not supported in THIN driver

at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)

at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:179)

at oracle.jdbc.dbaccess.DBError.check_error(DBError.java:1160)

at oracle.jdbc.ttc7.TTC7Protocol.logon(TTC7Protocol.java:195)

at oracle.jdbc.driver.OracleConnection.<init>(OracleConnection.java:365)

at oracle.jdbc.driver.OracleDriver.getConnectionInstance(OracleDriver.java:547)

at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:347)

... 69 more

Accepted Solutions (1)

Accepted Solutions (1)

ted_ueda
Active Contributor
0 Kudos

That exception should have percolated up to the JSF viewer, so don't know why your clients aren't seeing the exception.

I'm assuming the viewer isn't showing cached data?

By the way, do you specify Oracle database username and password in code?

Sincerely,

Ted Ueda

Former Member
0 Kudos

This error looks like it happens on every report run, but most times, the report runs fine. In some cases they are getting other errors that may or may not be related to this one, very glitchy things like NullPointerExceptions, "Can't use a closed connection" messages, ArrayIndexOutOfBoundsExceptions, etc. and they are not consistent. You run a given report 10 times, you might get these errors 2 of the 10. When I used the non-JSF JRC implementation in other projects, it worked fine, so I'm not sure what I'm doing wrong with the JSF code. Below is my database connection method if that helps:

public ConnectionInfos getDBConnection(){

IConnectionInfo oIconnectionInfo = new ConnectionInfo();

ConnectionInfos oConnectionInfos = new ConnectionInfos();

FacesContext fc = FacesContext.getCurrentInstance();

Map<String, Object> Params = (Map<String, Object>) fc.getExternalContext().getSessionMap();

try {

ReportSelectionBean sBean = (ReportSelectionBean)Params.get(IManagedBeanNames.REPORT_SELECTION_BEAN);

String driver = Configuration.getProperty("CrystalDBDriver");

String ConnStr = null;

String instance = Configuration.getProperty("db-schema");

if (instance.equals("crca"))

{

ConnStr = "Use JDBC=b(true);Connection URL=s(jdbc:oracle:thin:@pabaix10:1521:crca);Database Class Name=s(oracle.jdbc.OracleDriver);Server=s(pabaix10);User ID=s(crcuser);Password=crcuser1;Trusted_Connection=b(false);JDBC Connection String=s(!oracle.jdbc.OracleDriver!jdbc:oracle:thin:{userid}/@pabaix10:1521:crca)"; } else if (instance.equals("crcp")) { ConnStr = "Use JDBC=b(true);Connection URL=s(jdbc:oracle:thin:@pabaix08:1521:crcp);Database Class Name=s(oracle.jdbc.OracleDriver);Server=s(pabaix08);User ID=s(crcuser);Password=crcuser1;Trusted_Connection=b(false);JDBC Connection String=s(!oracle.jdbc.OracleDriver!jdbc:oracle:thin:{userid}/@pabaix08:1521:crcp)";

}

PropertyBag propertyBag = new PropertyBag();

if (instance.equals("crca"))

{

propertyBag.put("Server Name", "pabaix10");

propertyBag.put("URI", "!oracle.jdbc.OracleDriver!jdbc:oracle:thin:{userid}/@pabaix10:1521:crca"); oIconnectionInfo.setUserName("crcuser"); oIconnectionInfo.setPassword("crcuser1"); } else if (instance.equals("crcp")) { propertyBag.put("Server Name", "pabaix08"); propertyBag.put("URI", "!oracle.jdbc.OracleDriver!jdbc:oracle:thin:{userid}/@pabaix08:1521:crcp");

oIconnectionInfo.setUserName("crcuser");

oIconnectionInfo.setPassword("crcuser1");

}

propertyBag.put("Connection String",ConnStr);

propertyBag.put("Server Type", "JDBC (JNDI)");

propertyBag.put("Database Class Name", driver);

propertyBag.put("Database DLL", "crdb_jdbc.dll");

PropertyBag bag = new PropertyBag();

bag.put(PropertyBagHelper.CONNINFO_CRQE_LOGONPROPERTIES, propertyBag);

bag.put(PropertyBagHelper.CONNINFO_CRQE_DATABASETYPE, "JDBC (JNDI)");

bag.put(PropertyBagHelper.CONNINFO_DATABASE_DLL ,"crdb_jdbc.dll");

oIconnectionInfo.setAttributes(bag);

oConnectionInfos.add(oIconnectionInfo);

}

catch(Exception e) {

}

return oConnectionInfos;

}

ted_ueda
Active Contributor
0 Kudos

I personally find JSF - and how the Crystal JSF viewer interacts with the framework - to be very touchy to work with, especially when persisting view state when you let the JSF framework handle the workflow.

There's just so many JSF implementations out there, each working slightly differently - especially how they store the view state.

I've gotten the JSF viewer to work consistently in the SUN reference JSF implementation, but encountered issues with other JSF vendors.

My experience matches yours - that the CrystalReportViewer is more amenable than the JSF viewer.

Sincerely,

Ted Ueda

Answers (0)