当前位置: 首页 > 知识库问答 >
问题:

AS400系统与JNDI的连接

龙成仁
2023-03-14

我可以很好地通过JNDI资源通过jt400连接到AS400:

    Connection conn = null;
    Statement stmt = null;
    try {
        Context ctx = (Context) new InitialContext().lookup("java:comp/env");
        conn = ((DataSource) ctx.lookup("jdbc/AS400")).getConnection();
        System.out.println(conn.getClientInfo());

        stmt = conn.createStatement();
        //SQL data fetch using the connection
        ResultSet rs = stmt.executeQuery("SELECT * FROM LIBRARY.TABLE");
        while (rs.next()) {
            System.out.println(rs.getString("COLUMN1"));
        }
        conn.close();
        conn = null;
    }
    catch(Exception e){System.out.println(e);}

但是,应用程序的另一部分使用DataQueues(来自同一个jt400库):

    String queue = "/QSYS.LIB/" + libraryName +".LIB/" + queueName +".DTAQ";

    try{
        system = new AS400(server, user, pass);
        DataQueue dq = new DataQueue(system, queue);

        // Convert the Data Strings to IBM format
        byte[] byteData = message.getBytes("IBM285");

        dq.write(byteData);
        System.out.println("Wrote to DataQueue");

    }catch(Exception e){
        e.printStackTrace();
        System.err.println(e);
    }finally{
        // Make sure to disconnect
        if(system != null){
            try{
                system.disconnectAllServices();
                System.out.println("Disconnected from DataQueue.");
            }catch(Exception e){
                System.err.println(e);
            }
        }
    }

文档似乎都指向AS400系统对象,这些对象是对servername、user、pass等的硬编码引用。

是否有更好的方法将dataqueue()与JNDI引用一起使用?

共有1个答案

华聪
2023-03-14

正如上面的注释中所假设的,DataQueue根本不是JDBC连接的一部分,它不能用于配置连接以用于读写DataQueue。由于这种情况,即使jt400库与JDBC连接,它也不能共享JDBC使用的连接方法。除非在DataQueue/Java示例联机中指定了硬编码连接(全部为1个),否则需要属性文件或其他基于服务器的解决方案。

 类似资料:
  • 问题内容: 我正在尝试使用SQL来构建.NET Web应用程序以查询AS400数据库。这是我第一次遇到AS400。 为了连接,我必须在我的机器(或AS400服务器)上安装什么?(用于Windows的IBM iSeries Access?) 连接字符串的组成部分是什么? 在哪里可以找到使用SQL命令构建数据访问层的示例代码? 谢谢。 问题答案: 您需要AS400 .Net数据提供程序。在这里检查:h

  • 我试图为动态多维数据集特性设置到as400 iSeries DB2的jdbc连接... 还是没运气..

  • 在数据库原理中,关系运算包含 选择、投影、连接 这三种运算。相应的在SQL语句中也有表现,其中Where子句作为选择运算,Select子句作为投影运算,From子句作为连接运算。 连接运算是从两个关系的笛卡尔积中选择属性间满足一定条件的元组,在连接中最常用的是等值连接和自然连接。 等值连接:关系R、S,取两者笛卡尔积中属性值相等的元组,不要求属性相同。比如 R.A=S.B 自然连接(内连接):是一

  • RabbitMQ Java客户端有以下概念: -与RabbitMQ服务器实例的连接 -??? 使用者线程池-使用RabbitMQ服务器队列中的消息的线程池 队列-按FIFO顺序保存消息的结构 我试图理解他们之间的关系,更重要的是,他们之间的联系。 我仍然不太清楚是什么,除了这是您发布和使用的结构,并且它是从一个开放的连接创建的。如果有人能向我解释一下“通道”代表什么,可能有助于澄清一些问题。 通道

  • 我使用Hikari连接池管理器来查询AS400机器中的一些表。 我设置了至少1个连接池连接,最多10个。我同时查询5个表。 问题是,尽管在查询之前使用HikariDataSource getConnection()方法,并且在每次查询之后使用Connection关闭()方法,但当我转到WRKACTJOB时,我看到10个活动作业,大概是每个连接一个,直到达到最大连接池连接。 如何清除未使用的连接\作

  • 我正在尝试开发一个android应用程序,它需要通过java servlet连接到远程数据库as400,并将JSON对象返回给用户。 这是我的DoGet方法代码: 在我通过eclipse启动servlet之后,它会停在“Class.forName(…)它给了我以下的错误:错误!1.爪哇。sql。SQLException:应用程序请求者无法建立连接。(连接超时:连接) 并且似乎无法连接到服务器,但我