powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Проблема JDBC подключения в Websphere Message Broker
10 сообщений из 10, страница 1 из 1
Проблема JDBC подключения в Websphere Message Broker
    #36427957
Фотография Vincent Vega
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Имеем поток сообщений (Message Broker 7.0 Win XP).
Нода JavaCompute должна по JDBC подключаться к DB2 делать запрос и результат выборки сохранять в файл. Тестирую код на базе SAMPLE. Проблема возникает при подключении к базе (DB2 9.7 Win 7).
Код ноды:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
package ua.vincent.jdbc;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import com.ibm.broker.javacompute.MbJavaComputeNode;
import com.ibm.broker.plugin.*;

public class SelectToFile_JavaSelect extends MbJavaComputeNode {

	public void evaluate(MbMessageAssembly assembly) throws MbException {
		MbOutputTerminal out = getOutputTerminal("out");
		// MbOutputTerminal alt = getOutputTerminal("alternate");

		MbMessage message = assembly.getMessage();

		// ----------------------------------------------------------
		// Add user code below
		MbMessage outMessage = new MbMessage();
		try {
			String jdbcConn = getUserDefinedAttribute("DB2CON").toString();
			System.out.println("Begin connection "+jdbcConn);
			Connection conn = getJDBCType4Connection(jdbcConn, JDBC_TransactionType.MB_TRANSACTION_AUTO);
			System.out.println("End connectont");
			Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
			ResultSet rs = stmt.executeQuery("SELECT * FROM VINCENT.EMPLOYEE");
			while (rs.next()) {
				System.out.println(rs.getString("LASTNAME"));
			}

		} catch (SQLException sqx) {
			sqx.printStackTrace();
		}
		// End of user code
		// ----------------------------------------------------------

		// The following should only be changed
		// if not propagating message to the 'out' terminal

		out.propagate(assembly);
	}
}
В этой строке
Код: plaintext
Connection conn = getJDBCType4Connection(jdbcConn, JDBC_TransactionType.MB_TRANSACTION_AUTO);
происходит ошибка.

JDBC подключение создавал следующими командами:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
mqsichangeproperties MB7BROKER -c JDBCProviders -o DB2CON -n connectionUrlFormat -v "jdbc:db2://[serverName]:[portNumber]/[databaseName]:user=[user];password=[password];"
mqsichangeproperties MB7BROKER -c JDBCProviders -o DB2CON -n databaseName -v "SAMPLE"
mqsichangeproperties MB7BROKER -c JDBCProviders -o DB2CON -n description -v "SAMPLE database"
mqsichangeproperties MB7BROKER -c JDBCProviders -o DB2CON -n jarsURL -v "C:\Program Files\IBM\SQLLIB\java" 
mqsichangeproperties MB7BROKER -c JDBCProviders -o DB2CON -n portNumber -v  50000 
mqsichangeproperties MB7BROKER -c JDBCProviders -o DB2CON -n serverName -v "scorpion"
mqsichangeproperties MB7BROKER -c JDBCProviders -o DB2CON -n type4DatasourceClassName -v "com.ibm.db2.jcc.DB2DataSource,com.ibm.db2.jcc.DB2Driver" 
mqsichangeproperties MB7BROKER -c JDBCProviders -o DB2CON -n databaseVersion -v  9 . 7 
mqsichangeproperties MB7BROKER -c JDBCProviders -o DB2CON -n type4DriverClassName -v com.ibm.db2.jcc.DB2Driver
mqsisetdbparms MB7BROKER -n jdbc::DB2CON -u "db2user" -p "password"
mqsichangeproperties MB7BROKER -c JDBCProviders -o DB2CON -n securityIdentity -v DB2CON


C:\Program Files\IBM\MQSI\ 7 . 0 >mqsireportproperties MB7BROKER -o DB2CON -c JDBCProviders -r

JDBCProviders
  DB2CON
    connectionUrlFormat='jdbc:db2://[serverName]:[portNumber]/[databaseName]:user=[user];password=[password];'
    connectionUrlFormatAttr1=''
    connectionUrlFormatAttr2=''
    connectionUrlFormatAttr3=''
    connectionUrlFormatAttr4=''
    connectionUrlFormatAttr5=''
    databaseName='SAMPLE'
    databaseType='default_Database_Type'
    databaseVersion='9.7'
    description='SAMPLE database'
    environmentParms='default_none'
    jarsURL='C:\Program Files\IBM\SQLLIB\java'
    portNumber='50000'
    securityIdentity='DB2CON'
    serverName='scorpion'
    type4DatasourceClassName='com.ibm.db2.jcc.DB2DataSource'
    type4DriverClassName='com.ibm.db2.jcc.DB2Driver'

BIP8071I: Successful command completion.
Нода трейса имеет такие настройки:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
################################################################################
TIMESTAMP: ${CURRENT_TIMESTAMP}:
ROOT ============================================================================
${Root} 
BODY ============================================================================
${Body} 
EXCEPTION =========================================================================
${ExceptionList}
Полученный файл с ошибкой:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
################################################################################ 
TIMESTAMP:  2010 - 01 - 24   17 : 42 : 23 . 887846 : 
ROOT ============================================================================ 
( ['MQROOT' : 0x13a2d950]
  (0x01000000:Name):Properties = ( ['MQPROPERTYPARSER' : 0x13aed570]
    (0x03000000:NameValue):MessageSet             = '' (CHARACTER)
    (0x03000000:NameValue):MessageType            = '' (CHARACTER)
    (0x03000000:NameValue):MessageFormat          = '' (CHARACTER)
    (0x03000000:NameValue):Encoding               =  546  (INTEGER)
    (0x03000000:NameValue):CodedCharSetId         =  1208  (INTEGER)
    (0x03000000:NameValue):Transactional          = TRUE (BOOLEAN)
    (0x03000000:NameValue):Persistence            = FALSE (BOOLEAN)
    (0x03000000:NameValue):CreationTime           = GMTTIMESTAMP '2010-01-24 15:42:23.060' (GMTTIMESTAMP)
    (0x03000000:NameValue):ExpirationTime         = - 1  (INTEGER)
    (0x03000000:NameValue):Priority               =  0  (INTEGER)
    (0x03000000:NameValue):ReplyIdentifier        = X'000000000000000000000000000000000000000000000000' (BLOB)
    (0x03000000:NameValue):ReplyProtocol          = 'MQ' (CHARACTER)
    (0x03000000:NameValue):Topic                  = NULL
    (0x03000000:NameValue):ContentType            = '' (CHARACTER)
    (0x03000000:NameValue):IdentitySourceType     = '' (CHARACTER)
    (0x03000000:NameValue):IdentitySourceToken    = '' (CHARACTER)
    (0x03000000:NameValue):IdentitySourcePassword = '' (CHARACTER)
    (0x03000000:NameValue):IdentitySourceIssuedBy = '' (CHARACTER)
    (0x03000000:NameValue):IdentityMappedType     = '' (CHARACTER)
    (0x03000000:NameValue):IdentityMappedToken    = '' (CHARACTER)
    (0x03000000:NameValue):IdentityMappedPassword = '' (CHARACTER)
    (0x03000000:NameValue):IdentityMappedIssuedBy = '' (CHARACTER)
  )
  (0x01000000:Name):MQMD       = ( ['MQHMD' : 0x13abeee8]
    (0x03000000:NameValue):SourceQueue      = 'JDBC.IN' (CHARACTER)
    (0x03000000:NameValue):Transactional    = TRUE (BOOLEAN)
    (0x03000000:NameValue):Encoding         =  546  (INTEGER)
    (0x03000000:NameValue):CodedCharSetId   =  1208  (INTEGER)
    (0x03000000:NameValue):Format           = 'MQSTR   ' (CHARACTER)
    (0x03000000:NameValue):Version          =  2  (INTEGER)
    (0x03000000:NameValue):Report           =  0  (INTEGER)
    (0x03000000:NameValue):MsgType          =  8  (INTEGER)
    (0x03000000:NameValue):Expiry           = - 1  (INTEGER)
    (0x03000000:NameValue):Feedback         =  0  (INTEGER)
    (0x03000000:NameValue):Priority         =  0  (INTEGER)
    (0x03000000:NameValue):Persistence      =  0  (INTEGER)
    (0x03000000:NameValue):MsgId            = X'414d51204d4237514d47522020202020a5ba5a4b20057f02' (BLOB)
    (0x03000000:NameValue):CorrelId         = X'000000000000000000000000000000000000000000000000' (BLOB)
    (0x03000000:NameValue):BackoutCount     =  0  (INTEGER)
    (0x03000000:NameValue):ReplyToQ         = '                                                ' (CHARACTER)
    (0x03000000:NameValue):ReplyToQMgr      = 'MB7QMGR                                         ' (CHARACTER)
    (0x03000000:NameValue):UserIdentifier   = 'Vincent     ' (CHARACTER)
    (0x03000000:NameValue):AccountingToken  = X'16010515000000d1da740323f3f66343170a32eb03000000000000000000000b' (BLOB)
    (0x03000000:NameValue):ApplIdentityData = '                                ' (CHARACTER)
    (0x03000000:NameValue):PutApplType      =  11  (INTEGER)
    (0x03000000:NameValue):PutApplName      = 're MQ\java\jre\bin\javaw.exe' (CHARACTER)
    (0x03000000:NameValue):PutDate          = DATE '2010-01-24' (DATE)
    (0x03000000:NameValue):PutTime          = GMTTIME '15:42:23.060' (GMTTIME)
    (0x03000000:NameValue):ApplOriginData   = '    ' (CHARACTER)
    (0x03000000:NameValue):GroupId          = X'000000000000000000000000000000000000000000000000' (BLOB)
    (0x03000000:NameValue):MsgSeqNumber     =  1  (INTEGER)
    (0x03000000:NameValue):Offset           =  0  (INTEGER)
    (0x03000000:NameValue):MsgFlags         =  0  (INTEGER)
    (0x03000000:NameValue):OriginalLength   = - 1  (INTEGER)
  )
  (0x01000000:Name):BLOB       = ( ['none' : 0x1bbb3060]
    (0x03000000:NameValue):UnknownParserName = 'MQSTR' (CHARACTER)
    (0x03000000:NameValue):BLOB              = X'6531653165313265' (BLOB)
  )
)  
BODY ============================================================================ 
( ['none' : 0x1bbb3060]
  (0x03000000:NameValue):UnknownParserName = 'MQSTR' (CHARACTER)
  (0x03000000:NameValue):BLOB              = X'6531653165313265' (BLOB)
)  
EXCEPTION ========================================================================= 
( ['MQROOT' : 0xb38728]
  (0x01000000:Name):RecoverableException = (
    (0x03000000:NameValue):File                 = 'F:\build\S000_P\src\DataFlowEngine\PluginInterface\ImbJniNode.cpp' (CHARACTER)
    (0x03000000:NameValue):Line                 =  1177  (INTEGER)
    (0x03000000:NameValue):Function             = 'ImbJniNode::evaluate' (CHARACTER)
    (0x03000000:NameValue):Type                 = 'ComIbmJavaComputeNode' (CHARACTER)
    (0x03000000:NameValue):Name                 = 'ua/vincent/jdbc/SelectToFile#FCMComposite_1_2' (CHARACTER)
    (0x03000000:NameValue):Label                = 'ua.vincent.jdbc.SelectToFile.JavaSelect' (CHARACTER)
    (0x03000000:NameValue):Catalog              = 'BIPmsgs' (CHARACTER)
    (0x03000000:NameValue):Severity             =  3  (INTEGER)
    (0x03000000:NameValue):Number               =  2230  (INTEGER)
    (0x03000000:NameValue):Text                 = 'Caught exception and rethrowing' (CHARACTER)
    (0x01000000:Name     ):RecoverableException = (
      (0x03000000:NameValue):File     = 'MbNode.java' (CHARACTER)
      (0x03000000:NameValue):Line     =  1527  (INTEGER)
      (0x03000000:NameValue):Function = 'getJDBCType4Connection' (CHARACTER)
      (0x03000000:NameValue):Type     = '' (CHARACTER)
      (0x03000000:NameValue):Name     = '' (CHARACTER)
      (0x03000000:NameValue):Label    = '' (CHARACTER)
      (0x03000000:NameValue):Catalog  = 'BIPmsgs' (CHARACTER)
      (0x03000000:NameValue):Severity =  3  (INTEGER)
      (0x03000000:NameValue):Number   =  6233  (INTEGER)
      (0x03000000:NameValue):Text     = 'Failed to obtain JDBC Connection' (CHARACTER)
      (0x01000000:Name     ):Insert   = (
        (0x03000000:NameValue):Type =  5  (INTEGER)
        (0x03000000:NameValue):Text = 'JavaSelect' (CHARACTER)
      )
      (0x01000000:Name     ):Insert   = (
        (0x03000000:NameValue):Type =  5  (INTEGER)
        (0x03000000:NameValue):Text = 'DB2CON' (CHARACTER)
      )
      (0x01000000:Name     ):Insert   = (
        (0x03000000:NameValue):Type =  5  (INTEGER)
        (0x03000000:NameValue):Text = 'java.lang.reflect.InvocationTargetException' (CHARACTER)
      )
      (0x01000000:Name     ):Insert   = (
        (0x03000000:NameValue):Type =  5  (INTEGER)
        (0x03000000:NameValue):Text = 'No Details' (CHARACTER)
      )
    )
  )
)

Вопрос. Как понять почему именно не работает JDBC подключение? Телнетом подключится к базе могу. Логин и пароль тоже правильные.
...
Рейтинг: 0 / 0
Проблема JDBC подключения в Websphere Message Broker
    #36428559
BRK01
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Маленький вопрос, вы в какой последовательности выполняете эти команды?

авторmqsisetdbparms MB7BROKER -n jdbc::DB2CON -u "db2user" -p "password"
mqsichangeproperties MB7BROKER -c JDBCProviders -o DB2CON -n securityIdentity -v DB2CON
...
Рейтинг: 0 / 0
Проблема JDBC подключения в Websphere Message Broker
    #36428572
BRK01
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Еще можно попробовать сунуть подключение в блок try и сделать вывод Exception в файл.
...
Рейтинг: 0 / 0
Проблема JDBC подключения в Websphere Message Broker
    #36428834
Фотография Vincent Vega
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
mqsisetdbparms MB7BROKER -n jdbc::DB2CON -u "db2user" -p "password"
mqsichangeproperties MB7BROKER -c JDBCProviders -o DB2CON -n securityIdentity -v DB2CON
Сначала остановил брокер mqsistop потом выполнил mqsisetdbparms потом mqsistart потом mqsichangeproperties .
У меня есть нода Trace в которую я вывожу ${ExceptionList} как указал в своем посте. Вот только понять из этого стека я ничего не могу:(
...
Рейтинг: 0 / 0
Проблема JDBC подключения в Websphere Message Broker
    #36428864
BRK01
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В документации говорится следующее, в команде mqsisetdbparms после jdbc:: указывается security ID, которое задается у вас только после этой команды....

автор
JDBC type 4 connections
Use the mqsisetdbparms command to associate a user ID and password pair with a JDBC type 4 connection. The value that you specify for the -n ResourceName must have a prefix of jdbc::, followed by the value that matches the -n securityIdentity property of the associated JDBCProvider configurable service.

mqsisetdbparms broker name -n resource_name -u userID -p password

For example:

mqsisetdbparms BROKER1 -n jdbc::mySecurityIdentity -u myuserid -p secretpw



Proof link
...
Рейтинг: 0 / 0
Проблема JDBC подключения в Websphere Message Broker
    #36429914
Фотография Vincent Vega
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну я так и делал, сначала создал
mqsisetdbparms jdbc::mySecurityIdentity а потом установил его командой mqsichangeproperties (смс мой первый пост) Но вопрос у меня немножко в другом. Как понять в чем именно ошибка при подключении? Брокер не находит строку конкта, формат может не правильный, авторизацию не проходит или еще что то ?
Из сообщения
Код: plaintext
1.
 (0x03000000:NameValue):Text     = 'Failed to obtain JDBC Connection' (CHARACTER)

сложно понять в чем ошибка.
...
Рейтинг: 0 / 0
Проблема JDBC подключения в Websphere Message Broker
    #36431045
BRK01
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Единственное на что еще могу обратить внимание (к сожалению, нет возможности повторить ситуацию), это:

авторtype4DatasourceClassName -v "com.ibm.db2.jcc.DB2DataSource,com.ibm.db2.jcc.DB2Driver"

Здесь по идее должен быть указан класс, соответствующий спецификации XA, и последнего DB2Driver здесь быть не должно.

В логах операционной системы нет сообщений об ошибках?
...
Рейтинг: 0 / 0
Проблема JDBC подключения в Websphere Message Broker
    #36432399
Фотография Vincent Vega
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BRK01Единственное на что еще могу обратить внимание (к сожалению, нет возможности повторить ситуацию), это:

авторtype4DatasourceClassName -v "com.ibm.db2.jcc.DB2DataSource,com.ibm.db2.jcc.DB2Driver"

Здесь по идее должен быть указан класс, соответствующий спецификации XA, и последнего DB2Driver здесь быть не должно.

В логах операционной системы нет сообщений об ошибках?

com.ibm.db2.jcc.DB2Driver - так написано в хелпе, да и если на java по JDBC подключаться то я указываю этот класс:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
	private static Connection getConnection() throws ClassNotFoundException, SQLException {
		Class.forName("com.ibm.db2.jcc.DB2Driver");
		con = DriverManager.getConnection("jdbc:db2://scorpion:50000/SAMPLE", "db2user", "password");
		con.setAutoCommit(false);
		if (con == null)
			throw new SQLException("Connection is null");
		return con;
	}


В логах ничего нет.
...
Рейтинг: 0 / 0
Проблема JDBC подключения в Websphere Message Broker
    #36433206
BRK01
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Там 2 параметра:
type4DriverClassName - здесь как раз нужно указать драйвер
type4DatasourceClassName - здесь требуется указать класс data source, поддерживающий XA.

В команде у вас еще и драйвер указан, хотя в выводе его нет...
Попробуйте еще SecurityIdentity указать с другим именем (на случай, если идет конфликт имен)
...
Рейтинг: 0 / 0
Проблема JDBC подключения в Websphere Message Broker
    #36467595
Фотография Vincent Vega
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BRK01Там 2 параметра:
type4DriverClassName - здесь как раз нужно указать драйвер
type4DatasourceClassName - здесь требуется указать класс data source, поддерживающий XA.

В команде у вас еще и драйвер указан, хотя в выводе его нет...
Попробуйте еще SecurityIdentity указать с другим именем (на случай, если идет конфликт имен)

Только сейчас снова добрался до брокера. Проблема была в type4DatasourceClassName, поменял на
Код: plaintext
type4DatasourceClassName='com.ibm.db2.jcc.DB2XADataSource'
и все заработало.

Большое спасибо за помощь!
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / IBM DB2, WebSphere, IMS, U2 [игнор отключен] [закрыт для гостей] / Проблема JDBC подключения в Websphere Message Broker
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]