2009-04-23 3 views
1

Meine Anwendung ist eine eigenständige Java-App, die Kunden herunterladen, installieren und ausführen. Es verwendet MQ, um mit einem Host zu kommunizieren, der seit Jahren funktioniert. Weder ich selbst noch die Kunden haben MQ auf ihren Windows-Rechnern installiert. Wir integrieren und verwenden com.ibm.mq.jar, um die Arbeit zu erledigen.Auf Windows - wo ist ein mqji.properties für mich zu gebrauchen?

Offenbar aber MQ braucht eine mqji.properties Datei im Classpath, dies zu verhindern:

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

Also meine Frage ist: Wo bekomme ich eine ??

+0

Wenn es seit Jahren läuft, was ist mit dem alten passiert? Was hast du verändert, dass es plötzlich aufhört zu funktionieren? – amischiefr

Antwort

1

Hier ist eine Kopie meiner Datei mqji.properties.

Kopieren und Einfügen in einen Texteditor.
Als mqji.properties speichern
Versetzen Sie das Verzeichnis, in dem sich diese Datei befindet, in Ihren 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? 
+0

Es gibt eine grundsätzliche Frage, ob der Zweck von SO darin besteht, Menschen zu helfen, etwas in irgendeiner Weise funktionieren zu lassen, auch wenn es unzuverlässig und brüchig ist, oder wenn es darum geht, sie auf die zuverlässige und produktionsreife Antwort hinzuweisen. Hier produziert jemand ein kostenpflichtiges, lizenziertes Produkt, in das er Bits und Teile des Codes eines anderen Anbieters einbettet. Es ist nicht nur brüchig und unzuverlässig (wie die Frage selbst belegt), sondern es ist auch illegal und stellt sowohl die Firma des Posters als auch seine Kunden in Gefahr. -1 für eine Antwort, die diese Probleme fortsetzt. –

1

Die richtige Antwort ist, dass die Kunden die tatsächliche WMQ-Client und installieren Sie es mit Ihrer Anwendung herunterladen müssen und dass Ihre Anwendung sollte ohne die WMQ-Client Gläser verteilt werden. Dies gilt für eine Vielzahl von Gründen:

  • Sie sind nicht der Hersteller-Code neu zu verteilen autorisiert. Wenn WMQ-Client- oder -Servercode in einer OEM-Lizenz gebündelt ist, handelt es sich um die vollständige Installation und nicht nur um ein paar JAR-Dateien.
  • Einer der Gründe für die Installation des vollständigen Clients ist die Unterstützung. Die vollständige Client-Installation ist kostenlos und umfasst eine Reihe von Diagnosefunktionen. Der einzige Grund, keine vollständige Installation zu verlangen, ist die Bequemlichkeit, und wenn Sie Geld für die App verlangen, wird jede Annehmlichkeit durch eine mögliche Haftung bei weitem übertroffen.
  • Wartung. Wenn der Kunde den WMQ-Client installiert, kann er regelmäßige Wartung von IBM durchführen und weiß, dass es sich um eine vollständige und intakte Distribution handelt. Wenn Ihr Unternehmen nicht garantiert, dass die Komponenten, die es verteilt, eine gültige Installation sind, verwenden Sie besser die offizielle Installation. Angesichts der Art der Frage, diese Community zu fragen, was die gültige Nicht-Hersteller-Installation ist, sehe ich nicht, wie Ihr Unternehmen hinter dieser Konfiguration des IBM-Codes stehen kann.
  • Einhaltung der Vorschriften. Wenn einer Ihrer Kunden PCI, SOX, HIPAA oder behördlichen Vorschriften unterliegt, kann die Zertifizierung unter dieser Konfiguration nicht erreicht werden. Um beispielsweise PCI-konform zu sein, muss die bereitgestellte Anwendung vor einiger Zeit Fixpack 7.0.1.3 angewendet haben. Ohne die vollständige Installation ist es unmöglich, das Fixpack anzuwenden oder einem Auditor zu beweisen, dass es basierend auf den Gläsern installiert wurde.
  • Sicherheit. Wenn Sie kein SSL oder ein Exit verwenden, ist es für Ihre Kunden möglich, sich gegenseitig oder das WMQ-Administratorkonto zu imitieren. Um SSL zu verwenden, müssen Sie den IBM JCCE-Provider installieren, der in GSKit enthalten ist. Dies ist Teil der vollständigen Client-Installation und enthält nativen kompilierten C-Code, der in JAR-Dateien verfügbar ist. Basierend auf der Beschreibung der App, vermute ich, dass jeder Ihrer Kunden aus der Ferne Ihren QMgr anonym verwalten und beliebigen Betriebssystemcode ausführen kann. Nicht gut.

So ist die richtige Antwort für Sie und Ihre Kunden-Download zu gehen und den vollen WMQ-Client (SupportPac MQC7) installieren und konfigurieren Sie die App auf das auszuführen. Alles andere gefährdet Ihre Kunden und Ihr Unternehmen.

Und wenn Sie Zweifel über die Sicherheitsrisiken habe ich erwähnt, finden Sie in der IMPACT Hardening WebSphere MQ Präsentation und den WebSphere MQ Hands-on Security Labposted here.

Verwandte Themen