??xml version="1.0" encoding="utf-8" standalone="yes"?>
处理Q?/span>
?/span>sun.management.ManagementFactory替换?/span>java.lang.management.ManagementFactory
因ؓibm?/span>jdk没有sun.management.ManagementFactoryq个对象
错误信息如下Q?/span>
过最大长度限?/span>
处理Q?/span>
只能插入666个中文字W?/span>
2Q?/span>MBean调用问题
Websphere的MBean注册路径包括cellQnodeName和processNameQ具体可以铜鼓jconsoleq接来查看MBean注册的全路径。这三个值可以通过Websphere的com.ibm.websphere.management.AdminServiceFactoryq个对象来获取,spring中的配置如下:
<!--
<bean id="adminService" class="com.ibm.websphere.management.AdminServiceFactory" factory-method="getAdminService"/>
<bean id="adminService.cellName" class="org.springframework.beans.factory.config.PropertyPathFactoryBean"/>
<bean id="adminService.nodeName" class="org.springframework.beans.factory.config.PropertyPathFactoryBean"/>
<bean id="adminService.processName" class="org.springframework.beans.factory.config.PropertyPathFactoryBean"/>
<bean id="websphereNamingStrategy" class="com.des.engine.mbean.WebsphereNamingStrategy">
<property name="cellName" ref="adminService.cellName"/>
<property name="nodeName" ref="adminService.nodeName"/>
<property name="processName" ref="adminService.processName"/>
</bean>
WebsphereNamingStrategy己创建的对象包括那三个属?/span>
3Q安全问?/span>
出现如下错误Q?/span>Caused by: javax.management.JMRuntimeException: ADMN0022E: ׃凭证不或凭证ؓI,无法?/span> org.apache.servicemix:Name=ServiceMgtImpl,cell=dvpbNode02Cell,Type=SystemService,ContainerName=ServiceMix,node=dvpbNode02,process=server1 MBean ?/span> retrieveServiceList 操作q行讉K?/span>
该问题是因ؓ讄了安全控Ӟ把控制台的【安全?>安全理、应用程序和基础l构】里面的所以安全配|都LQ?span style="color: red">然后重新启动服务器主机(注意是重启主机,不然安全讄不v作用Q,再启动websphere服务应该可以了Q还有就是servicemix的应用要跟websphere一起启动,不要{websphere启动后再到控制台启动jdbc在操?/span>oracle量数据的时候用ResultSet获取所有的q回数据出现内存溢出
处理Q?br />
出错的原因是ResultSet用的是可滚动l果集,正常情况?/span>ResultSet是指针指向数据库的数据,本n是不存储数据库的数据的,默认情况下就是提交?/span>sql能查询处上亿条的数据也是不消耗内存的Q但是如果用的是可滚动结果集?/span>ResultSet情况׃一样了Q?/span>ORACLE ?/span>不支持可滚动l果集的Q那么我们用JDBC得到一个可滚动的结果集是?/span>JDBC自己支持的,也就是说l果集是要存攑֜内存中的Q所以在量数据的情况下也就是要消耗大量内存的Q因此造成内存溢出也就是正常的了,所以如果是量数据的话׃要用可滚动结果集可以了?/span>
com.ibm.websphere.ce.cm.StaleConnectionException: [ibm][db2][jcc][t4][2030][11211]
到了通信错误。所使用的通信协议Q?/span>TCP/IP?/span>"n所使用的通信 APIQ?/span>SOCKETS?/span>
到错误的位|:Reply.fill()?/span>"n用于错误的通信功能Q?/span>InputStream.read()?/span>
特定于协议的错误代码数据不?/span>* ?/span> 0。消息:null"n
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)"n
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:67)"n at
sun.reflect.DelegatingConstructorAccessorImpl.newInstance
(DelegatingConstructorAccessorImpl.java:45)"n
at java.lang.reflect.Constructor.newInstance(Constructor.java:522)"n
at com.ibm.websphere.rsadapter.GenericDataStoreHelper.mapExceptionHelper
(GenericDataStoreHelper.java:523)"n
at com.ibm.websphere.rsadapter.GenericDataStoreHelper.mapException(GenericDataStoreHelper.java:578)"n
at com.ibm.ws.rsadapter.jdbc.WSJdbcUtil.mapException(WSJdbcUtil.java:909)"n
at com.ibm.ws.rsadapter.jdbc.WSJdbcStatement.executeQuery(WSJdbcStatement.java:898)"n
at com.newland.bi.util.db.DBUtil.executeQuery(Unknown Source)"n
at com.newland.bi.util.db.DBUtil.executeSql(Unknown Source)"n
at com.newland.bi.dao.jdbc.DaoImpl.executeQuery(DaoImpl.java:64)"n
at com.newland.bi.service.report.exp.dao.ReportExpDao.getExpList(ReportExpDao.java:72)"n
at com.newland.bi.service.report.exp.manage.ReportExpMgt.runExport(ReportExpMgt.java:91)"n
at com.newland.bi.service.report.exp.servlet.ReportExp1Servlet$1.run(ReportExp1Servlet.java:97)"n
at java.util.TimerThread.mainLoop(Timer.java:537)"n at java.util.TimerThread.run(Timer.java:487)"n
处理Q?br />
出错的原因可能是防火墙问?/span>,?/span>websphere应用服务器和数据库服务器之间是否存在防火?/span>
防火墙是否会讄多久没活动的q接p动断开?/span>,如果是这L话就会有问题,因ؓwebsphere上面的数据库q接池可能有一D|间没q接而被防火墙断掉了
但对于连接池本nҎ׃知道该连接是否还可用,所?/span>web应用从连接池获取的连接可能就是已l断开的了,所以就可能会出现日C的错误问?br />
Caused by: java.lang.ClassNotFoundException: org.apache.axis.soap.MessageFactoryImpl
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:268)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at javax.xml.soap.MessageFactory.newInstance(MessageFactory.java:50)
... 10 more
处理Q?/span>
原因是调用了axis?/span> soap.MessageFactoryImpl,cxf应该用的?/span>sun?br /> 在注册安全拦截器之前执行下面代码可以了
System.setProperty("javax.xml.soap.MessageFactory", "com.sun.xml.messaging.saaj.soap.ver1_1.SOAPMessageFactory1_1Impl");