AS400 системное соединение с JNDI

Я могу понять, как просто подключиться к AS400 через jt400 с ресурсами JNDI:

    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);
            }
        }
    }

Внутри этого рабочего кода для ссылок на DataQueues server, user, pass что не идеально.

Я хотел бы использовать соединение JNDI AS400, которое я уже настроил, но каждый пример, который я вижу о подключении Java к DataQueues, ссылается на пример, очень похожий на этот.

Кажется, что вся документация указывает на системные объекты AS400, которые представляют собой жестко запрограммированные ссылки на имя сервера, пользователя, пароль и т. Д.

Есть ли лучший способ использовать DataQueue() со ссылкой JNDI?

1 ответ

Решение

Как предполагается в комментариях выше, DataQueue вообще не является частью соединения JDBC, его нельзя использовать для настройки соединения для использования для чтения и записи в DataQueue. Поскольку это так, он также не может совместно использовать методы подключения, которые использует JDBC, даже если библиотека jt400 подключается к JDBC. Файл свойств или другие серверные решения требуются, если в онлайн-примерах DataQueue/Java не указано жестко закодированное соединение (все 1 из них).

Другие вопросы по тегам