同样的程序(基于jdk1.5),连的同一个数据库(版本9i),用tomcat发布毫无问题,但一换到weblogic就出来这个错误,百思不得其解,请教各位高手,这是啥问题,如何解决?weblogic错误信息:[code=INIFile]
        */ insert
        into
            CORE_LOGININFO
            (USERID, USERNAME, LOGINTIME, LOGINIP, LOPINSTATION, LOGENVINFO, LOG
OUTTIME, SESSIONID, LOGINID)
        values
            (?, ?, ?, ?, ?, ?, ?, ?, ?)
2009-05-29 20:37:44,171 WARN [org.hibernate.util.JDBCExceptionReporter] - SQL Er
ror: 1401, SQLState: 23000
2009-05-29 20:37:44,187 ERROR [org.hibernate.util.JDBCExceptionReporter] - ORA-0
1401: 插入的值对于列过大2009-05-29 20:37:44,187 WARN [org.hibernate.util.JDBCExceptionReporter] - SQL Er
ror: 1401, SQLState: 23000
2009-05-29 20:37:44,187 ERROR [org.hibernate.util.JDBCExceptionReporter] - ORA-0
1401: 插入的值对于列过大2009-05-29 20:37:44,203 ERROR [org.hibernate.event.def.AbstractFlushingEventList
ener] - Could not synchronize database state with session
org.hibernate.exception.ConstraintViolationException: Could not execute JDBC bat
ch update
        at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.j
ava:71)
        at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelp
er.java:43)
        at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:
249)
        at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:235)        at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:139)        at org.hibernate.event.def.AbstractFlushingEventListener.performExecutio
ns(AbstractFlushingEventListener.java:298)
        at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlus
hEventListener.java:27)
        at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1000)
        at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:338)
        at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java
:106)
        at org.springframework.orm.hibernate3.HibernateTransactionManager.doComm
it(HibernateTransactionManager.java:559)
        at org.springframework.transaction.support.AbstractPlatformTransactionMa
nager.processCommit(AbstractPlatformTransactionManager.java:611)
        at org.springframework.transaction.support.AbstractPlatformTransactionMa
nager.commit(AbstractPlatformTransactionManager.java:581)
        at org.springframework.transaction.interceptor.TransactionAspectSupport.
commitTransactionAfterReturning(TransactionAspectSupport.java:307)
        at org.springframework.transaction.interceptor.TransactionInterceptor.in
voke(TransactionInterceptor.java:117)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(
ReflectiveMethodInvocation.java:176)
        at org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterc
eptor.intercept(Cglib2AopProxy.java:652)
        at com.mip.core.security.service.logic.FiterLogActionManager$$EnhancerBy
CGLIB$$936bbe45.setLog(<generated>)
        at com.mip.core.security.service.filter.UserAuthenticationProcessingFilt
er.requiresAuthentication(UserAuthenticationProcessingFilter.java:155)
        at org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProces
singFilter.java:189)
        at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(F
ilterChainProxy.java:274)
        at com.mip.core.security.service.filter.SSOProcessingFilter.doFilter(SSO
ProcessingFilter.java:176)
        at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(F
ilterChainProxy.java:274)
        at org.acegisecurity.ui.logout.LogoutFilter.doFilter(LogoutFilter.java:1
08)
        at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(F
ilterChainProxy.java:274)
        at org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilte
r(HttpSessionContextIntegrationFilter.java:195)
        at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(F
ilterChainProxy.java:274)
        at org.acegisecurity.util.FilterChainProxy.doFilter(FilterChainProxy.jav
a:148)
        at org.acegisecurity.util.FilterToBeanProxy.doFilter(FilterToBeanProxy.j
ava:90)
        at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.ja
va:42)
        at org.springframework.web.filter.CharacterEncodingFilter.doFilterIntern
al(CharacterEncodingFilter.java:78)
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerR
equestFilter.java:77)
        at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.ja
va:42)
        at weblogic.servlet.internal.WebAppServletContext$ServletInvocationActio
n.run(WebAppServletContext.java:3212)
        at weblogic.security.acl.internal.AuthenticatedSubject.doAs(Authenticate
dSubject.java:321)
        at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:
121)
        at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppS
ervletContext.java:1983)
        at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletC
ontext.java:1890)
        at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.j
ava:1344)
        at weblogic.work.ExecuteThread.execute(ExecuteThread.java:209)
        at weblogic.work.ExecuteThread.run(ExecuteThread.java:181)
Caused by: java.sql.BatchUpdateException: ORA-01401: 插入的值对于列过大        at oracle.jdbc.driver.DatabaseError.throwBatchUpdateException(DatabaseEr
ror.java:343)
        at oracle.jdbc.driver.OraclePreparedStatement.executeBatch(OraclePrepare
dStatement.java:10698)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:585)
        at org.logicalcobwebs.proxool.ProxyStatement.invoke(ProxyStatement.java:
100)
        at org.logicalcobwebs.proxool.ProxyStatement.intercept(ProxyStatement.ja
va:57)
        at oracle.jdbc.internal.OraclePreparedStatement$$EnhancerByProxool$$e906
20c8.executeBatch(<generated>)
        at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.jav
a:48)
        at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:
242)
        ... 38 more
[/code]

解决方案 »

  1.   

    程序的编码问题?还是weblogic里面的编码设置?
      

  2.   

    感觉是sessionid过大引起的oracle插入错误,看看tomcat 和 weblogic 各自产生的sessionid都是多少位的
      

  3.   


    如何看weblogic产生的sessionid呢?
      

  4.   

    这个倒没关心过,Cookie可以获得sessionid,服务器端肯定也保存了,估计进console可以看到吧,比如monitoring那里应该有监控session的
      

  5.   

    sessionid在tomcat和weblogic下的长度的确是不一样的,我遇到过,weblogic下的sessionid要长很多