problem tutaj jest wymóg, że „Mój szef poprosił mnie, aby używać czystych JMS java (nie ibm.mq lib), aby to zrobić.” JMS jest specyfikacją, a każda implementacja musi być zgodna z interfejsem API i semantyką, ale może wykonywać dowolne czynności na niskim poziomie. Zawsze należy korzystać z klas implementacji dostarczonych przez dostawcę transportu. Dlatego jeśli używasz produktu WebSphere MQ jako transportu, musisz użyć klas JMS produktu IBM MQ, aby napisać aplikację JMS.
To powiedziawszy, jeśli będziesz trzymać się czystych wywołań API JMS, będziesz mógł podłączyć wszystkie klasy dostawców transportu.Zazwyczaj ma to na celu spełnienie wymagań wymienionych w oryginalnym poście.
Jest to artykuł opisujący dokładnie to, czego szukasz nie nazywa Running a standalone Java application on WebSphere MQ V6.0 Używa tylko API JMS i używa JNDI w lokalnym systemie plików (pliki .bindings). Wymieniając klasy IBM JMS na innego dostawcę i wykorzystując narzędzia JNDI, można podłączyć dowolny transport JMS bez zmiany kodu za pomocą tego podejścia.
Jeśli chcesz zrobić to samo bez JNDI, spójrz na przykładowe programy dostarczone z instalacją klienta MQ, w której uzyskałeś klasy Java. W systemie UNIX/Linux są one w /opt/mqm/samp
, a na Windowsie są w install_dir/tools/jms/samples
. Próbka SimpleRequestor.java
ma następujący kod dla inicjowania swoją fabrykę połączeń bez JNDI:
try {
// Create a connection factory
JmsFactoryFactory ff = JmsFactoryFactory.getInstance(WMQConstants.WMQ_PROVIDER);
JmsConnectionFactory cf = ff.createConnectionFactory();
// Set the properties
cf.setStringProperty(WMQConstants.WMQ_HOST_NAME, "localhost");
cf.setIntProperty(WMQConstants.WMQ_PORT, 1414);
cf.setStringProperty(WMQConstants.WMQ_CHANNEL, "SYSTEM.DEF.SVRCONN");
cf.setIntProperty(WMQConstants.WMQ_CONNECTION_MODE, WMQConstants.WMQ_CM_CLIENT);
cf.setStringProperty(WMQConstants.WMQ_QUEUE_MANAGER, "QM1");
Ponieważ takie podejście nie używa JNDI, które są wymagane do pisania kodu, który nie jest w transporcie różnych dostawców transportowych. Jest to specyfikacja produktu IBM WebSphere MQ.
Jeśli przyjąłeś słoiki MQ skądś i nie masz pełnej instalacji (a więc nie masz próbek), możesz pobrać go jako SupportPac MQC7. Pobieranie jest bezpłatne. Zasadniczo należy używać najnowszego klienta, nawet z menedżerem kolejek na poziomie podstawowym. Oczywiście nie można uzyskać funkcjonalności V7 z wersji V6 QMgr, ale implementacja JMS w kliencie V7 jest znacznie ulepszona, nawet w przypadku funkcji V6. Jeśli z jakiegoś powodu naprawdę musisz użyć klienta V6, możesz pobrać go jako SupportPacMQC6. Niezależnie od używanej wersji klienta, upewnij się, że korzystasz z odpowiedniego centrum informacyjnego.
V6 Infocenter
V7 Infocenter
Wreszcie strona docelowa z indeksem dla wszystkich SupportPacs jest here.
Czy bieg kodu wewnątrz WebSphere Application Server, a następnie łączy się z WebSphere MQ do wiadomości, czy jest samodzielny aplikacja i chce się połączyć z WebSphere MQ dla przesyłanie wiadomości? –