0

私のアプリケーションでは、 というストアド プロシージャを使用してSearchSubscriptionData、2 つの異なるサブスクリプション テーブルで数値を検索します。

データベースは、WebLogic 10.3.3 の JDBC 構成 (MySQL ドライバー) を介してアクセスされます。使用するユーザーは 1 人だけです (root、パスワードなし)。

私が使用するコードスニペットは次のとおりです。

Connection con = getConnection(); // perform lookup on JDBC Driver
CallableStatement cst = con.prepareCall("{CALL SearchSubscriptionData(?,?,?,?,?,?,?)}");
cst.setString("numTel", aBnumber); // input param (B-Number)
cst.registerOutParameter("numberFoundFlag", Types.INTEGER); 
cst.registerOutParameter("radixFound", Types.VARCHAR); // <-- this instruction generates a NullPointerException
cst.registerOutParameter("outRoutingId", Types.VARCHAR);
...// plus three more parameters, not important now

例外は次のとおりです。

[#|2013-09-16T14:35:51.340+0200|SEVERE|ece|com.ericsson.core.db.DBManager|_ThreadID=451;_ThreadName=[ACTIVE] ExecuteThread: '19' for queue: 'weblogic.kernel.Default(self-tuning)';ClassName=com.ericsson.core.db.DBManager;MethodName=searchSubscriptionData;_RequestID=<unavailable>|Exception: java.lang.NullPointerException
    at com.mysql.jdbc.CallableStatement.getNamedParamIndex(CallableStatement.java:1250)
    at com.mysql.jdbc.CallableStatement.registerOutParameter(CallableStatement.java:1668)
    at weblogic.jdbc.wrapper.CallableStatement_com_mysql_jdbc_CallableStatement.registerOutParameter(Unknown Source)    
    at com.ericsson.core.db.DBManager.searchSubscriptionData(DBManager.java:139)
    at com.ericsson.jee.ngin.services.screening.service.Screening.getSubscriptionDataWithStoreProcedure(Screening.java:2481)
    at com.ericsson.jee.ngin.services.screening.service.Screening.onInitialDP(Screening.java:1463)
    at com.ericsson.jee.ngin.services.screening.service.Screening.handleMessage(Screening.java:384)
    at com.ericsson.cba.cs1plus.traffic.impl.CallSession.dispatchEvent(CallSession.java:1303)
    at com.ericsson.cba.cs1plus.traffic.impl.CallSession.doInitialDpEvent(CallSession.java:537)
    at com.ericsson.cba.cs1plus.traffic.impl.CallSession.doHandleNetworkEvent(CallSession.java:331)
    at com.ericsson.cba.cs1plus.traffic.impl.CallSession.handleMessage(CallSession.java:234)
    at com.ericsson.jee.ngin.services.screening.service.Screening.handleEvent(Screening.java:327)
    at com.ericsson.jee.ngin.services.screening.service.Screening.onCreate(Screening.java:236)
    at com.ericsson.ngin.session.mdb.DefaultServiceMDB.onCreate(DefaultServiceMDB.java:56)
    at sun.reflect.GeneratedMethodAccessor677.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
[...more stack trace here...]

ここでおなじみの何かを見た人はいますか?ストアド プロシージャが MySQL DB から削除された場合、エラーがストア プロシージャ自体へのアクセス エラーである場合と同様に、同じエラーが発生することを強調することが重要です。しかし、どの種類のエラーでしょうか?

私にとって本当に奇妙なのは、なぜNullPointerException「2番目の」registerOutParameter呼び出しに適用され、最初の呼び出しには適用されないのかということです。

なにか提案を?

4

0 に答える 0