Getting SQLException: found null connection context - JPub Java method
455648Sep 29 2005 — edited Sep 29 2005I am getting java.sql.SQLException: found null connection context when I call a Java method that calls a SQLJ method created by JPublisher from a PL/SQL Package and functions in an Oracle 9i database. What am I doing wrong? Here is the calling code:
VaultAudit va = new VaultAudit();
va.main(doc.getVault(),doc.getDocType(),doc.getDocNumber(),doc.getRevLevel(),
doc.getShtPgNum(),bdFrame,doc.getLocation(),tsSysDate,
doc.getStatus(),doc.getGroupID(),doc.getProdLine(),doc.getEwo(),doc.getPartName(),
bdEngSec,doc.getWarningInfo(),doc.getComments(),doc.getStockList(),
doc.getDwgSize(),tsDocDate,tsRevDate,
doc.getDetail(),doc.getvAlias(),outMessage);
And here is the java class:
/*@lineinfo:filename=VaultAudit*//*@lineinfo:user-code*//*@lineinfo:1^1*/package edoc.loadutil;
import java.sql.SQLException;
import sqlj.runtime.ref.DefaultContext;
import sqlj.runtime.ConnectionContext;
import java.sql.Connection;
public class VaultAudit
{
/* connection management */
protected DefaultContext __tx = null;
protected Connection __onn = null;
public void setConnectionContext(DefaultContext ctx) throws SQLException
{ release(); __tx = ctx; }
public DefaultContext getConnectionContext() throws SQLException
{ if (__tx==null)
{ __tx = (__onn==null) ? DefaultContext.getDefaultContext() : new DefaultContext(__onn); }
return __tx;
};
public Connection getConnection() throws SQLException
{ return (__onn==null) ? ((__tx==null) ? null : __tx.getConnection()) : __onn; }
public void release() throws SQLException
{ if (__tx!=null && __onn!=null) __tx.close(ConnectionContext.KEEP_CONNECTION);
__onn = null; __tx = null;
}
/* constructors */
public VaultAudit() throws SQLException
{ __tx = DefaultContext.getDefaultContext();
}
public VaultAudit(DefaultContext c) throws SQLException
{ __tx = c; }
public VaultAudit(Connection c) throws SQLException
{__onn = c; __tx = new DefaultContext(c); }
public void main (
String inVault,
String inDesc,
String inDocNo,
String inRevLvl,
String inShtpgNo,
java.math.BigDecimal inFrame,
String inLocation,
java.sql.Timestamp inSysDate,
String inStatus,
String inGrpId,
String inPlName,
String inEwo,
String inPrtName,
java.math.BigDecimal inEngSect,
String inWarning,
String inCmntTxt,
String inStkList,
String inDwgSize,
java.sql.Timestamp inDocDate,
java.sql.Timestamp inRevDate,
String inDetail,
String inVAlias,
String outMessage[])
throws SQLException
{
/*@lineinfo:generated-code*//*@lineinfo:64^5*/
// ************************************************************
// #sql [getConnectionContext()] { CALL EDOC.VAULT_AUDIT.MAIN(
// :inVault,
// :inDesc,
// :inDocNo,
// :inRevLvl,
// :inShtpgNo,
// :inFrame,
// :inLocation,
// :inSysDate,
// :inStatus,
// :inGrpId,
// :inPlName,
// :inEwo,
// :inPrtName,
// :inEngSect,
// :inWarning,
// :inCmntTxt,
// :inStkList,
// :inDwgSize,
// :inDocDate,
// :inRevDate,
// :inDetail,
// :inVAlias,
// :outMessage[0]) };
// ************************************************************
{
// declare temps
oracle.jdbc.OracleCallableStatement __sJT_st = null;
sqlj.runtime.ref.DefaultContext __sJT_cc = getConnectionContext(); if (__sJT_cc==null) sqlj.runtime.error.RuntimeRefErrors.raise_NULL_CONN_CTX();
sqlj.runtime.ExecutionContext.OracleContext __sJT_ec = ((__sJT_cc.getExecutionContext()==null) ? sqlj.runtime.ExecutionContext.raiseNullExecCtx() : __sJT_cc.getExecutionContext().getOracleContext());
try {
String theSqlTS = "BEGIN EDOC.VAULT_AUDIT.MAIN(\n :1 ,\n :2 ,\n :3 ,\n :4 ,\n :5 ,\n :6 ,\n :7 ,\n :8 ,\n :9 ,\n :10 ,\n :11 ,\n :12 ,\n :13 ,\n :14 ,\n :15 ,\n :16 ,\n :17 ,\n :18 ,\n :19 ,\n :20 ,\n :21 ,\n :22 ,\n :23 ) \n; END;";
__sJT_st = __sJT_ec.prepareOracleCall(__sJT_cc,"0edoc.loadutil.VaultAudit",theSqlTS);
if (__sJT_ec.isNew())
{
__sJT_st.registerOutParameter(23,oracle.jdbc.OracleTypes.VARCHAR);
}
// set IN parameters
__sJT_st.setString(1,inVault);
__sJT_st.setString(2,inDesc);
__sJT_st.setString(3,inDocNo);
__sJT_st.setString(4,inRevLvl);
__sJT_st.setString(5,inShtpgNo);
__sJT_st.setBigDecimal(6,inFrame);
__sJT_st.setString(7,inLocation);
__sJT_st.setTimestamp(8,inSysDate);
__sJT_st.setString(9,inStatus);
__sJT_st.setString(10,inGrpId);
__sJT_st.setString(11,inPlName);
__sJT_st.setString(12,inEwo);
__sJT_st.setString(13,inPrtName);
__sJT_st.setBigDecimal(14,inEngSect);
__sJT_st.setString(15,inWarning);
__sJT_st.setString(16,inCmntTxt);
__sJT_st.setString(17,inStkList);
__sJT_st.setString(18,inDwgSize);
__sJT_st.setTimestamp(19,inDocDate);
__sJT_st.setTimestamp(20,inRevDate);
__sJT_st.setString(21,inDetail);
__sJT_st.setString(22,inVAlias);
// execute statement
__sJT_ec.oracleExecuteUpdate();
// retrieve OUT parameters
outMessage[0] = (String) __sJT_st.getString(23);
} finally { __sJT_ec.oracleClose(); }
}
// ************************************************************
/*@lineinfo:user-code*//*@lineinfo:87^29*/
}
}/*@lineinfo:generated-code*/
Here is the SQLJ:
package edoc.loadutil;
import java.sql.SQLException;
import sqlj.runtime.ref.DefaultContext;
import sqlj.runtime.ConnectionContext;
import java.sql.Connection;
public class VaultAudit
{
/* connection management */
protected DefaultContext __tx = null;
protected Connection __onn = null;
public void setConnectionContext(DefaultContext ctx) throws SQLException
{ release(); __tx = ctx; }
public DefaultContext getConnectionContext() throws SQLException
{ if (__tx==null)
{ __tx = (__onn==null) ? DefaultContext.getDefaultContext() : new DefaultContext(__onn); }
return __tx;
};
public Connection getConnection() throws SQLException
{ return (__onn==null) ? ((__tx==null) ? null : __tx.getConnection()) : __onn; }
public void release() throws SQLException
{ if (__tx!=null && __onn!=null) __tx.close(ConnectionContext.KEEP_CONNECTION);
__onn = null; __tx = null;
}
/* constructors */
public VaultAudit() throws SQLException
{ __tx = DefaultContext.getDefaultContext();
}
public VaultAudit(DefaultContext c) throws SQLException
{ __tx = c; }
public VaultAudit(Connection c) throws SQLException
{__onn = c; __tx = new DefaultContext(c); }
public void main (
String inVault,
String inDesc,
String inDocNo,
String inRevLvl,
String inShtpgNo,
java.math.BigDecimal inFrame,
String inLocation,
java.sql.Timestamp inSysDate,
String inStatus,
String inGrpId,
String inPlName,
String inEwo,
String inPrtName,
java.math.BigDecimal inEngSect,
String inWarning,
String inCmntTxt,
String inStkList,
String inDwgSize,
java.sql.Timestamp inDocDate,
java.sql.Timestamp inRevDate,
String inDetail,
String inVAlias,
String outMessage[])
throws SQLException
{
#sql [getConnectionContext()] { CALL EDOC.VAULT_AUDIT.MAIN(
:inVault,
:inDesc,
:inDocNo,
:inRevLvl,
:inShtpgNo,
:inFrame,
:inLocation,
:inSysDate,
:inStatus,
:inGrpId,
:inPlName,
:inEwo,
:inPrtName,
:inEngSect,
:inWarning,
:inCmntTxt,
:inStkList,
:inDwgSize,
:inDocDate,
:inRevDate,
:inDetail,
:inVAlias,
:OUT (outMessage[0])) };
}
}
Please help. I cannot find anything in the documentation about how to do this.