[06-5-28 8:46:11:594 CST] 00000041 ExceptionUtil E?? CNTR0020E: 在調用 bean“BeanId(AFCDAS_EAR#AFCDAS_FACADE.jar#LoginFacade, null)”上的方法“loginRegister”期間,EJB 拋出意外(未聲明的)異常。異常數據:java.lang.NullPointerException
?at oracle.jdbc.dbaccess.DBData.clearItem(DBData.java:431)
?at oracle.jdbc.dbaccess.DBDataSetImpl.clearItem(DBDataSetImpl.java:3528)
?at oracle.jdbc.driver.OraclePreparedStatement.clearParameters(OraclePreparedStatement.java:3401)
?at com.ibm.ws.rsadapter.jdbc.WSJdbcConnection.resetStatement(WSJdbcConnection.java:2179)
?at com.ibm.ws.rsadapter.jdbc.WSJdbcConnection.prepareStatement(WSJdbcConnection.java:1830)
?at com.ibm.ws.rsadapter.jdbc.WSJdbcConnection.prepareStatement(WSJdbcConnection.java:1782)
?at org.hibernate.jdbc.AbstractBatcher.getPreparedStatement(AbstractBatcher.java:442)
?at org.hibernate.jdbc.AbstractBatcher.prepareStatement(AbstractBatcher.java:93)
?at org.hibernate.jdbc.AbstractBatcher.prepareStatement(AbstractBatcher.java:86)
?at org.hibernate.jdbc.AbstractBatcher.prepareBatchStatement(AbstractBatcher.java:171)
?at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2048)
?at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2427)
?at org.hibernate.action.EntityInsertAction.execute(EntityInsertAction.java:51)
?at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:248)
?at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:232)
?at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:139)
?at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:297)
?at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
?at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:985)
?at com.mtrc.afcdas.dao.base.HibernateDAOImpl.create(HibernateDAOImpl.java:70)
?at com.mtrc.afcdas.ejb.session.LoginFacadeBean.loginRegister(LoginFacadeBean.java:141)
?at com.mtrc.afcdas.ejb.session.EJSLocalStatelessLoginFacade_4ee4fc9e.loginRegister(EJSLocalStatelessLoginFacade_4ee4fc9e.java:152)
?at com.mtrc.afcdas.delegate.LoginDelegate.loginResgister(LoginDelegate.java:61)
?at com.mtrc.afcdas.web.struts.action.LoginAction.loginAction(LoginAction.java:78)
?at com.mtrc.afcdas.web.struts.action.LoginAction.appExecute(LoginAction.java:48)
?at com.mtrc.afcdas.framework.web.AppBaseAction.execute(AppBaseAction.java:55)
?at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:484)
?at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:274)
?at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
?at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:525)
?at javax.servlet.http.HttpServlet.service(HttpServlet.java:763)
?at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
?at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1212)
?at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:629)
?at com.ibm.ws.webcontainer.servlet.CacheServletWrapper.handleRequest(CacheServletWrapper.java:80)
?at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:1657)
?at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:77)
?at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:421)
?at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewInformation(HttpInboundLink.java:367)
?at com.ibm.ws.http.channel.inbound.impl.HttpICLReadCallback.complete(HttpICLReadCallback.java:94)
?at com.ibm.ws.tcp.channel.impl.WorkQueueManager.requestComplete(WorkQueueManager.java(Compiled Code))
?at com.ibm.ws.tcp.channel.impl.WorkQueueManager.attemptIO(WorkQueueManager.java(Compiled Code))
?at com.ibm.ws.tcp.channel.impl.WorkQueueManager.workerRun(WorkQueueManager.java(Compiled Code))
?at com.ibm.ws.tcp.channel.impl.WorkQueueManager$Worker.run(WorkQueueManager.java(Compiled Code))
?at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java(Compiled Code))
websphere v6有自己默認的日志處理。
?????? 這里引用一段譯自文章(http://www.webspherepower.com/issues/issue200405/00001281001.html )的話:
????? ?大部分的Log實現都有五種標準的日志消息級別,他們是DEBUG, INFO, WARN, ERROR,?和 FATAL。
?????? ?IBM的TrLog(Trace Log的簡寫)? 支持這五種級別,并且還額外支持一種級別TRACE。Trace級別比Debug要低,如果你設置你的日志級別為Debug ,那么Trace級別的信息就不會輸出到Log中。Trace 只是額外提供了一種用于解決復雜問題的日志級別。
?
??????? 要控制Trlog中的Trace級別的日志只能通過WAS的管理控制臺。不像Log4J等其他的日志實現使用屬性文件來配置參數,TrLog直接響應來自于控制臺的操縱。控制臺操作員可以通過內置于管理控制臺的工具來修改不同日志的日志級別。
如果想用自定義的輸出方式來輸出日志信息(如:apache的commons-logging),需以下幾個步驟配置:
1)在一個公共的項目(其他的項目都會引用它)中引入common-logging.jar ,log4j.jar
?? 并且把配置好的common-logging.properties 和log4j.properties 放在根目錄下面
2)在websphere自己提供的集成開發環境RAD中,在EAR項目的應用程序部署描述描述符中,選擇“部署”頁,在應用程序區域,
??? 選中EAR項目,并將其類載入方式由原來的Parent_First改為Parent_Last ,其他的維持不變
3)在管理控制臺中有待嘗試,這里先引用他人的一段話(http://forum.javaeye.com/bloglist.php?userid=8514)
??? 在控制臺中的"環境->共享庫"頁面中添加一個共享庫,類路徑指向要采用的日志文件,這里是添加commons-logging.jar和Log4j.jar,保存設置.
??? 在"企業應用程序 > 你的應用程序 > 庫引用"下添加剛才創建的共享庫,將"類裝入器方式 "改為最后裝入父類
參考的文章有:
Utilizing the IBM Trace Log in Websphere Appliation?Server?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? (
http://www.webspherepower.com/issues/issue200405/00001281001.html
)
Integrating Jakarta Commons Loggin
(
http://www-1.ibm.com/support/docview.wss?uid=swg27004610
)
雖然這些文章里面介紹的是基于WAS 5 ,但是原理都是相同的