В Windows - где мне использовать mqji.properties? - PullRequest
1 голос
/ 23 апреля 2009

Мое приложение является автономным приложением Java, которое пользователи могут загружать, устанавливать и запускать. Он использует MQ для связи с хостом, который работает годами. Ни у меня, ни у клиентов на компьютерах с Windows не установлено ничего MQ; мы включаем и используем com.ibm.mq.jar для выполнения работы.

Очевидно, что MQ для предотвращения этого нужен файл mqji.properties в пути к классам:

Unable to load message catalog - mqji
com.ibm.mq.MQException: Message catalog not found

Итак, мой вопрос: где мне взять ??

Ответы [ 2 ]

1 голос
/ 30 января 2011

Правильный ответ здесь заключается в том, что клиенты должны загрузить фактический клиент WMQ и установить его вместе с вашим приложением, и что ваше приложение должно распространяться без jar-файлов клиента WMQ. Это верно по ряду причин:

  • Вы не имеете права распространять код поставщика. Когда клиентский или серверный код WMQ включен в OEM-лицензию, это полная установка, а не просто несколько jar-файлов.
  • Одной из причин установки полного клиента является получение поддержки. Полная установка клиента бесплатна и включает в себя ряд средств диагностики. Единственная причина, по которой не требуется полная установка, - это удобство, и если вы берете деньги за приложение, любое удобство значительно перевешивается потенциальной ответственностью.
  • обслуживание. Если клиент устанавливает клиент WMQ, он может применять периодическое обслуживание от IBM и знать, что это полный и неповрежденный дистрибутив. Если ваша компания не готова гарантировать, что компоненты, которые они будут распространять, являются действительной установкой, вам лучше использовать официальную установку. Учитывая характер вопроса, задающего этому сообществу вопрос о действительной установке сторонних производителей, я не понимаю, как ваша компания может поддержать эту конфигурацию кода IBM.
  • Соответствие нормативам. Если кто-либо из ваших клиентов подпадает под действие стандартов PCI, SOX, HIPAA или государственных органов, сертификация в этой конфигурации невозможна. Например, чтобы быть PCI-совместимым, развернутое приложение должно было применить Fix Pack 7.0.1.3 довольно давно. Без полной установки невозможно применить пакет исправлений или доказать аудитору, что он установлен на основе jar-файлов.
  • Security. Если вы не используете SSL или выход, ваши клиенты могут выдать себя за другого или за административную учетную запись WMQ. Чтобы использовать SSL, вам необходимо установить поставщика IBM JCCE, входящего в состав GSKit, который является частью полной установки клиента и содержит собственный скомпилированный код C, недоступный в jar-файлах. Основываясь на описании приложения, я предполагаю, что любой из ваших клиентов может удаленно, анонимно администрировать ваш QMgr и выполнять произвольный код ОС. Не хорошо.

Таким образом, правильный ответ для вас и ваших клиентов - загрузить и установить полный клиент WMQ ( SupportPac MQC7 ) и настроить приложение для работы на нем. Все, что меньше, подвергает риску ваших клиентов и вашу компанию.

И если у вас есть какие-либо сомнения по поводу угроз безопасности, о которых я упоминал, пожалуйста, ознакомьтесь с презентацией IMPACT по усилению защиты WebSphere MQ и с опубликованной практической лабораторией безопасности WebSphere MQ здесь .

1 голос
/ 27 октября 2009

Вот копия моего файла mqji.properties.

Скопируйте и вставьте в текстовый редактор.
Сохранить как mqji.properties
Поместите каталог, в котором находится этот файл, в ваш CLASSPATH.

# mqjiEn_US.properties
# Messages produced by the Websphere MQ Java interface classes
# (shared by bindings and by client)
# Messages beginning with MQJI are explanations for exceptions
# Messages beginning with MQJE are errors
#
# From class MQDistributionList
#
1=MQJI001: Queue manager object was null.
2=MQJI002: Not connected to a queue manager.
3=MQJI003: No object records supplied.
4=MQJI004: No response records supplied.
5=MQJI005: Not enough response records supplied.
6=MQJI006: An object or response record was null.
7=MQJI007: openResponse parameter was null.
8=MQJI008: Null message passed to put.
9=MQJI009: Null put message options passed to put.
10=MQJI010: Number of message trackers and response records do not match.
11=MQJI011: The distribution list has been closed.
#
# From class MQEnvironment
#
12=Websphere MQ Client for Java v5.3
#
# From class MQGetMessageOptions
#
13=MQJI013: Unsupported version number - {0}
14=MQJI014: Insufficient data received from queue manager.
15=MQJI015: Erroneous eyecatcher : {0}
#
# From class MQManagedObject
#
16=MQJI016: Object has been closed.
17=MQJI017: No selectors specified.
#
# From class MQMD
#
18=MQJI015: Erroneous eyecatcher : {0}
19=MQJI018: Array copy error in MQMD
#
# From class MQMessage
#
20=MQJI019: Malformed UTF string in MQMessage::readLine
21=MQJI020: Unsupported codeset : {0}
22=MQJI021: String index error occurred during codeset conversion
23=MQJI015: Erroneous eyecatcher : {0}
#
# From class MQOD
#
24=MQJI022: Unmatched number of object and response records
#
# From class MQPutMessageOptions
#
25=MQJI023: Null MQMessageTracker object supplied
#
# From class MQMessageTracker
#
26=MQJI024: Array copy error in MQMessageTracker
#
# From class MQQueue
#
27=MQJI025: Null MQMessage passed to get
28=MQJI026: Null MQGetMessageOptions passed to get
29=MQJI027: The queue has been closed
30=MQJI028: Null MQMessage passed to put
31=MQJI029: Null MQPutMessageOptions passed to put
#
# From class MQQueueManager
#
32=MQJI030: The queue manager does not support distribution lists.
#
# From class MQS390FloatSupport
#
33=MQJI031: Number outside of range for double precision S/390 Float
#
# From class MQS390PackedDecimalSupport
#
34=MQJI032: Invalid sign nibble in packed decimal
35=MQJI033: Packed Decimal digit outside of range 0-9
36=MQJI034: Outside of range for short packed decimal (+/-999)
37=MQJI035: Outside of range for integer packed decimal (+/-9999999)
38=MQJI036: Outside of range for long packed decimal (0+/-999999999999999)
#
# From class MQException
#
39=MQJE001: Completion Code {0}, Reason {1}
40=MQJE001: An MQException occurred: Completion Code {0}, Reason {1}\n{2}
#
# Messages produced by client only classes...
#
41=MQJI037: Error occurred during Websphere MQ API call - reason code {0}
42=MQJI038: Unexpected internal error during string index processing
43=MQJE002: Socket output stream was null
44=MQJE003: IO error transmitting message buffer
45=MQJE004: Socket input stream was null
46=MQJE005: TSH eyecatcher not found.  Eyecatcher was {0}
47=MQJE006: Internal error during array copy
48=MQJE007: IO error reading message data
49=MQJE008: IOException whilst sending status message
50=MQJE009: Failed to build API header
51=MQJE010: Unknown host: {0}
52=MQJE011: Socket connection attempt refused
53=MQJE012: Security error - cannot connect to host {0}
54=MQJE013: Error accessing socket streams
55=MQJE014: Control Point rejected connection
56=MQJE015: Error connecting to Control Point
57=MQJE016: MQ queue manager closed channel immediately during connect\n\Closure reason = {0}
58=MQJE017: MQ queue manager sent status error {0} during connect
59=MQJE018: Protocol error - unexpected segment type received
60=MQJE019: Error creating initial data segment
61=MQJE020: CCSID not supported by queue manager
62=MQJE021: Encoding not supported by queue manager
63=MQJE022: FAP level not supported by queue manager
64=MQJE023: Negotiation failed on maximum messages per batch
65=MQJE024: Sequence wrap value not supported by queue manager
66=MQJE025: Channel closed after two initial changes.  Closure reason {0}
67=MQJE026: Queue manager sent status error {0} during connect
68=MQJE027: Queue manager security exit rejected connection with error code {0}
69=MQJE028: Channel closed during security exchanges
70=MQJE029: Unexpected message type sent by queue manager
71=MQJE030: IOException during security flows
72=MQJE031: Security exit closed the channel
73=MQJE032: Queue manager security exit rejected connection with reason code {0}
74=MQJE033: A required security flow was not sent by the queue manager
75=MQJE034: Unexpected message type sent by queue manager
76=MQJE035: Negotiated maximum transmission size is too small
77=MQJE036: Queue manager rejected connection attempt
78=MQJE037: Remote queue manager closed the connection
79=MQJE038: Unexpected segment type {0} received
80=MQJE039: IOException whilst building connection data stream
81=MQJE040: Channel closed by exit
82=MQJE041: Unsupported version number - (0)
83=MQJE042: Erroneous eyecatcher: {0}
84=MQJE043: Insuffucient data received from queue manager
85=MQJE044: Array copy error in MQMD
86=MQJE045: Malformed UTF string
87=MQJE046: Unsupported codeset : {0}
88=MQJE047: String index error occurred during codeset conversion
89=MQJE048: Invalid sign nibble in packed decimal
90=MQJE049: Packed Decimal digit outside of range 0-9
91=MQJE050: Outside of range for short packed decimal (+/-999)
92=MQJE051: Outside of range for integer packed decimal (+/-9999999)
93=MQJE052: Outside of range for long packed decimal (0+/-999999999999999)
94=Websphere MQ Bindings for Java v5.3
95=MQJE053: The Websphere MQ Bindings for Java library could not be loaded
96=MQJE054: The queue manager does not support distribution lists
97=MQJE055: The queue manager does not support version 2 Websphere MQ API structures
98=MQJE056: Initial negotiation failure
99=MQJE057: Channel closed during security exchanges
100=MQJE058: Invalid number of object or response records
101=MQJE059: String index error
102=MQJE060: Could not find class {0}
103=MQJE061: Could not find field {0}
104=MQJE062: Could not find method {0}
#
# Messages used by MQManagedConnectionJ11, ManagedConnectionFactories
# and MQManagedConnectionMetaData
#
105=MQJI039: Invalid ConnectionRequestInfo object
106=MQJI040: MQManagedConnection already destroyed
107=MQJI041: Method {0} is not supported by Websphere MQ Classes for Java
108=MQJI042: MQManagedConnection is not reusable
#
# Messages from MQManagedConnectionMetaData
#
109=IBM Websphere MQ
110=Command Level {0}
#
# Messages from MQXAi
#
111=Security manager prevented access to native methods library for MQ XA support.
112=Failed to load native methods library for MQ XA support.
#
# Messages from MQXAResource
#
113=xa_open failed
114=XA operation failed, see errorCode
115=XAResource closed

#
# Messages produced by com.ibm.mq.MQMsg2
#
116=MQJE063: Unsupported character set {0}
117=MQJE064: Unsupported version of MQMD structure {0}
118=MQJE065: Inconsistent internal state detected

# message when server doesn't support client XA
119=client connection not XA enabled

#
# Messages produced via SSL options on a client connection
#
120=MQJE066: {0} provided as an unsupported object type
121=MQJE067: Peer name {0} did not match requested name {1}
122=MQJE068: Server certificate has been revoked
123=MQJE069: Unable to contact CertStore
124=MQJE070: SSL Protocol error: Channel not configured for SSL?
...