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 из них).