免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 5285 | 回复: 7
打印 上一主题 下一主题

wsad5.0连接as/400的db2数据库出错,请各位高手帮忙,急! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-11-19 10:36 |只看该作者 |倒序浏览
我在window server2000下安装wsad5.0,配置数据源,(as/400是局域网中的另一台机器)
1、选的是:DB2 UDB for iSeries (Toolbox XA)
                实现类名:com.ibm.as400.access.AS400JDBCXADataSource
   用的驱动是jt400.jar
   配置好数据源后连接报错:
[05-11-19 10:14:46:832 CST] 61e4f531 FreePool      E J2CA0046E: 为资源 jdbc/ds1 创建 ManagedConnection 期间,方法 createManagedConnctionWithMCWrapper 捕捉到异常,并抛出 ResourceAllocationException。原始异常:com.ibm.ws.exception.WsException: DSRA8100E: Unable to get a XAConnection from the DataSource.
        at com.ibm.ws.rsadapter.exceptions.DataStoreAdapterException.<init>(DataStoreAdapterException.java:244)
        at com.ibm.ws.rsadapter.exceptions.DataStoreAdapterException.<init>(DataStoreAdapterException.java:171)
        at com.ibm.ws.rsadapter.AdapterUtil.createDataStoreAdapterException(AdapterUtil.java:191)
        at com.ibm.ws.rsadapter.DSConfigurationHelper.getPooledConnection(DSConfigurationHelper.java:694)
        at com.ibm.ws.rsadapter.spi.WSRdbDataSource.getPooledConnection(WSRdbDataSource.java:440)
        at com.ibm.ws.rsadapter.spi.WSManagedConnectionFactoryImpl.createManagedConnection(WSManagedConnectionFactoryImpl.java:566)
        at com.ibm.ejs.j2c.poolmanager.FreePool.createManagedConnectionWithMCWrapper(FreePool.java:1244)
        at com.ibm.ejs.j2c.poolmanager.FreePool.createOrWaitForConnection(FreePool.java:1030)
        at com.ibm.ejs.j2c.poolmanager.PoolManager.reserve(PoolManager.java:1590)
        at com.ibm.ejs.j2c.ConnectionManager.allocateMCWrapper(ConnectionManager.java:65
        at com.ibm.ejs.j2c.ConnectionManager.allocateConnection(ConnectionManager.java:446)
        at com.ibm.ws.rsadapter.jdbc.WSJdbcDataSource.getConnection(WSJdbcDataSource.java:215)
        at com.ibm.ws.rsadapter.jdbc.WSJdbcDataSource.getConnection(WSJdbcDataSource.java:190)
        at org.apache.jsp._CREATtABLE._jspService(_CREATtABLE.java:85)
        at com.ibm.ws.webcontainer.jsp.runtime.HttpJspBase.service(HttpJspBase.java:89)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
        at com.ibm.ws.webcontainer.jsp.servlet.JspServlet$JspServletWrapper.service(JspServlet.java:357)
        at com.ibm.ws.webcontainer.jsp.servlet.JspServlet.serviceJspFile(JspServlet.java:675)
        at com.ibm.ws.webcontainer.jsp.servlet.JspServlet.service(JspServlet.java:773)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
        at com.ibm.ws.webcontainer.servlet.StrictServletInstance.doService(StrictServletInstance.java:110)
        at com.ibm.ws.webcontainer.servlet.StrictLifecycleServlet._service(StrictLifecycleServlet.java:174)
        at com.ibm.ws.webcontainer.servlet.IdleServletState.service(StrictLifecycleServlet.java:313)
        at com.ibm.ws.webcontainer.servlet.StrictLifecycleServlet.service(StrictLifecycleServlet.java:116)
        at com.ibm.ws.webcontainer.servlet.ServletInstance.service(ServletInstance.java:283)
        at com.ibm.ws.webcontainer.servlet.ValidServletReferenceState.dispatch(ValidServletReferenceState.java:42)
        at com.ibm.ws.webcontainer.servlet.ServletInstanceReference.dispatch(ServletInstanceReference.java:40)
        at com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.handleWebAppDispatch(WebAppRequestDispatcher.java:94
        at com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.dispatch(WebAppRequestDispatcher.java:530)
        at com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.forward(WebAppRequestDispatcher.java:176)
        at com.ibm.ws.webcontainer.srt.WebAppInvoker.doForward(WebAppInvoker.java:79)
        at com.ibm.ws.webcontainer.srt.WebAppInvoker.handleInvocationHook(WebAppInvoker.java:201)
        at com.ibm.ws.webcontainer.cache.invocation.CachedInvocation.handleInvocation(CachedInvocation.java:71)
        at com.ibm.ws.webcontainer.srp.ServletRequestProcessor.dispatchByURI(ServletRequestProcessor.java:182)
        at com.ibm.ws.webcontainer.oselistener.OSEListenerDispatcher.service(OSEListener.java:334)
        at com.ibm.ws.webcontainer.http.HttpConnection.handleRequest(HttpConnection.java:56)
        at com.ibm.ws.http.HttpConnection.readAndHandleRequest(HttpConnection.java:610)
        at com.ibm.ws.http.HttpConnection.run(HttpConnection.java:431)
        at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:593)
---- Begin backtrace for nested exception
java.sql.SQLException: The application requester cannot establish the connection.(Connection refused: connect
        at com.ibm.as400.access.JDError.throwSQLException(JDError.java:344)
        at com.ibm.as400.access.AS400JDBCConnection.setProperties(AS400JDBCConnection.java:1879)
        at com.ibm.as400.access.AS400JDBCDataSource.getConnection(AS400JDBCDataSource.java:343)
        at com.ibm.as400.access.AS400JDBCDataSource.getConnection(AS400JDBCDataSource.java:313)
        at com.ibm.as400.access.AS400JDBCXADataSource.getXAConnection(AS400JDBCXADataSource.java:133)
        at com.ibm.ws.rsadapter.DSConfigurationHelper$1.run(DSConfigurationHelper.java:676)
        at java.security.AccessController.doPrivileged(Native Method)
        at com.ibm.ws.rsadapter.DSConfigurationHelper.getPooledConnection(DSConfigurationHelper.java:671)
        at com.ibm.ws.rsadapter.spi.WSRdbDataSource.getPooledConnection(WSRdbDataSource.java:440)
        at com.ibm.ws.rsadapter.spi.WSManagedConnectionFactoryImpl.createManagedConnection(WSManagedConnectionFactoryImpl.java:566)
        at com.ibm.ejs.j2c.poolmanager.FreePool.createManagedConnectionWithMCWrapper(FreePool.java:1244)
        at com.ibm.ejs.j2c.poolmanager.FreePool.createOrWaitForConnection(FreePool.java:1030)
        at com.ibm.ejs.j2c.poolmanager.PoolManager.reserve(PoolManager.java:1590)
        at com.ibm.ejs.j2c.ConnectionManager.allocateMCWrapper(ConnectionManager.java:65.......................................................
[05-11-19 10:14:47:207 CST] 61e4f531 ConnectionMan E J2CA0020E: 连接池管理器无法分配一个受管连接:javax.resource.spi.ResourceAllocationException: DSRA8100E: Unable to get a XAConnection from the DataSource.
        at com.ibm.ejs.j2c.poolmanager.FreePool.createManagedConnectionWithMCWrapper(FreePool.java:1282)
        at com.ibm.ejs.j2c.poolmanager.FreePool.createOrWaitForConnection(FreePool.java:1030)
        at com.ibm.ejs.j2c.poolmanager.PoolManager.reserve(PoolManager.java:1590)
        at com.ibm.ejs.j2c.ConnectionManager.allocateMCWrapper(ConnectionManager.java:65
        at com.ibm.ejs.j2c.ConnectionManager.allocateConnection(ConnectionManager.java:446)
        at com.ibm.ws.rsadapter.jdbc.WSJdbcDataSource.getConnection(WSJdbcDataSource.java:215)
        at com.ibm.ws.rsadapter.jdbc.WSJdbcDataSource.getConnection(WSJdbcDataSource.java:190)
        at org.apache.jsp._CREATtABLE._jspService(_CREATtABLE.java:85)
        at com.ibm.ws.webcontainer.jsp.runtime.HttpJspBase.service(HttpJspBase.java:89)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
        at com.ibm.ws.webcontainer.jsp.servlet.JspServlet$JspServletWrapper.service(JspServlet.java:357)
        at com.ibm.ws.webcontainer.jsp.servlet.JspServlet.serviceJspFile(JspServlet.java:675)
        at com.ibm.ws.webcontainer.jsp.servlet.JspServlet.service(JspServlet.java:773)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
        at com.ibm.ws.webcontainer.servlet.StrictServletInstance.doService(StrictServletInstance.java:110)
        at com.ibm.ws.webcontainer.servlet.StrictLifecycleServlet._service(StrictLifecycleServlet.java:174)
        at com.ibm.ws.webcontainer.servlet.IdleServletState.service(StrictLifecycleServlet.java:313)
请各位大侠帮忙解决,我已经郁闷1天啦!

论坛徽章:
0
2 [报告]
发表于 2005-11-19 10:56 |只看该作者
我2004年刚做完一个中央国债登记结算公司的一个全国性交易的项目,我任项目经理。后台AS400,前置机RS600(Websphere 5.0),前端Java+explorer。有个team专门负责Websphere开发,包括Websphere开发环境的设置。因为是个人信息保密问题,我不能把他们的电话告诉你。我可以让他门在方便的时候,到这个论坛来解答你的问题,或者你可以直接打电话给IBM技术支持中心。打电话给IBM,是解决问题最佳途径。

论坛徽章:
0
3 [报告]
发表于 2005-11-19 11:01 |只看该作者
谢谢,我现在做的是深圳社保局的项目,也是做项目经理,但是下面的人都不懂这个技术,所以问题就有我来解决啦!我的电话是13424313241,邮箱是makekeok@163.com

论坛徽章:
0
4 [报告]
发表于 2005-11-28 19:41 |只看该作者
datasource的配置是什么? TOOLBOX是不需要用户名和密码的

论坛徽章:
0
5 [报告]
发表于 2005-11-29 14:28 |只看该作者
我以前测试写的一段代码,是可以连接上的,我也用WSAD5.0, AS400是V5R3. 当时好像是同时连接sql server和db2.
核心代码如下:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;


public class DbInput

{


        Connection src=null;

        Connection dest=null;

        Connection connformax=null;

        ConnPara srcPara;

        ConnPara destPara;

   

        public DbInput(){}

   

        public void dbInit()

        {

                DbXmlParser xmlparser=new DbXmlParser("dbs.xml");

                srcPara=xmlparser.getSource();

                destPara=xmlparser.getDest();

                try {

                   Class.forName("sun.jdbc.odbc.JdbcOdbcDriver" );

                   Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
                  
                   Class.forName("com.ibm.as400.access.AS400JDBCDriver");//2004-8-28 DB2/AS400

                   src = DriverManager.getConnection( srcPara.getUrl(), srcPara.getUsername(),srcPara.getPassword());

                   dest =DriverManager.getConnection( destPara.getUrl(), destPara.getUsername(),destPara.getPassword());

                   connformax= DriverManager.getConnection( destPara.getUrl(), destPara.getUsername(),destPara.getPassword());

                }

                //捕获加载驱动程序异常

                catch ( ClassNotFoundException cnfex ) {

                   System.err.println( "装载 JDBC/ODBC 驱动程序失败。" );

                   cnfex.printStackTrace();

                   System.exit( 1 );  // terminate program

                } catch ( SQLException ex )

                {

                        System.err.println( "连接失败" );

                        ex.printStackTrace();

                        System.exit( 1 );  // terminate program

                }           

        }


         
}

我的XML文件配置如下:
<?xml version="1.0" encoding="GBK"?>

<dbcopy>   

  <source>

        <class>com.microsoft.jdbc.sqlserver.SQLServerDriver</class>

    <url>jdbc:microsoft:sqlserver://SqlServerName:port;DatabaseName=dataname;SelectMethod=cursor</url>

    <user>username</user>

    <password>password</password>

  </source>

  
  
  <dest>

    <class>com.ibm.as400.access.AS400JDBCConnectionPoolDataSource</class>

    <url>jdbc:as400://as400name;naming=system</url>

    <user>User name</user>

    <password>password</password>

  </dest>

</dbcopy>

论坛徽章:
0
6 [报告]
发表于 2005-11-30 00:24 |只看该作者
大肥肥,你应该做一个连接工厂来做这个好像比较好。
在C#中可以用静态构造函数来获取配置文件的信息
然后用一个静态的方法返回连接~~,这样代码的重用性会高很多~~

论坛徽章:
0
7 [报告]
发表于 2005-11-30 10:14 |只看该作者
wildfish, 很感谢你的指点,谢谢!
说到连接数据库,其实我的这种连接方法在J2EE中不推荐使用,我的这种DriverMarager方法的主要问题是:
它是一个同步的类,这意味着在一个给定的时间内,只有一个线程可以运行,应该尽量使用多线程的DataSource技术。至于DataSource技术,不同的服务器,比如BEA WEBLOGIC,和IBM WEBSPHERE配置有点不同,但是基本都是通过控制台配置,然后绑定到JDNI树上,供应用使用,详细可以查询具体的手册。
我上面给的只是当时写这测试用的代码,见笑。
很高兴能和你探讨,有机会多交流~~

论坛徽章:
0
8 [报告]
发表于 2005-12-02 14:05 |只看该作者
~~,我对java的代码只是能看得程度,基本上不会写,我从事的是.net的开发。只是我们比较追求代码的重用。架构上的重用。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP