मैं जेबॉस ईएपी 6.3 का उपयोग कर रहा हूं और मैसेजिंग सुविधा का उपयोग करने की आवश्यकता है। मैं Jboss 4x, जहां हम कोड निम्न का उपयोग कर आसानी से संपर्क बना सकता है में काम किया:जेबॉस ईएपी 6.3 में हॉर्नेटक संदेश सेवा से कनेक्ट करने के लिए जावा प्रोग्राम लिखें?
public static final String PROVIDER_URL = "jnp://localhost:5445";
public static final String JNP_INTERFACES = "org.jboss.naming:org.jnp.interfaces";
public static final String INITIAL_CONTEXT_FACTORY = "org.jnp.interfaces.NamingContextFactory";
private static Context initialContext;
public static Context getInitialContextForClient() throws NamingException{
if(initialContext == null){
Properties prop = new Properties();
prop.put(Context.INITIAL_CONTEXT_FACTORY, INITIAL_CONTEXT_FACTORY);
prop.put(Context.URL_PKG_PREFIXES,JNP_INTERFACES);
prop.put(Context.PROVIDER_URL, PROVIDER_URL);
initialContext = new InitialContext(prop);
}
return initialContext;
}
ईएपी 6.3 में जिस तरह से काम ऊपर HornetQ से कनेक्ट करने देगा? यदि हां, तो अन्य कॉन्फ़िगरेशन की आवश्यकता है? साथ ही, मैंने पाया कि 1099 स्टैंडअलोन.एक्सएमएल में डिफ़ॉल्ट रूप से कॉन्फ़िगर नहीं किया गया है।
बाद स्टैंडअलोन-full.xml फ़ाइल में HornetQ लिए किया डिफ़ॉल्ट सेटिंग्स द्वारा कर रहे हैं:
<socket-binding name="messaging" port="5445"/>
<socket-binding name="messaging-group" port="0" multicast-address="${jboss.messaging.group.address:231.7.7.7}" multicast-port="${jboss.messaging.group.port:9876}"/>
<socket-binding name="messaging-throughput" port="5455"/>
मैं नीचे की तरह इसे करने की कोशिश करने में असमर्थ है क्योंकि:
<subsystem xmlns="urn:jboss:domain:messaging:1.4">
<hornetq-server>
<persistence-enabled>true</persistence-enabled>
<journal-type>NIO</journal-type>
<journal-min-files>2</journal-min-files>
<connectors>
<netty-connector name="netty" socket-binding="messaging"/>
<netty-connector name="netty-throughput" socket-binding="messaging-throughput">
<param key="batch-delay" value="50"/>
</netty-connector>
<in-vm-connector name="in-vm" server-id="0"/>
</connectors>
<acceptors>
<netty-acceptor name="netty" socket-binding="messaging"/>
<netty-acceptor name="netty-throughput" socket-binding="messaging-throughput">
<param key="batch-delay" value="50"/>
<param key="direct-deliver" value="false"/>
</netty-acceptor>
<in-vm-acceptor name="in-vm" server-id="0"/>
</acceptors>
<security-settings>
<security-setting match="#">
<permission type="send" roles="guest"/>
<permission type="consume" roles="guest"/>
<permission type="createNonDurableQueue" roles="guest"/>
<permission type="deleteNonDurableQueue" roles="guest"/>
</security-setting>
</security-settings>
<address-settings>
<address-setting match="#">
<dead-letter-address>jms.queue.DLQ</dead-letter-address>
<expiry-address>jms.queue.ExpiryQueue</expiry-address>
<redelivery-delay>0</redelivery-delay>
<max-size-bytes>10485760</max-size-bytes>
<page-size-bytes>2097152</page-size-bytes>
<address-full-policy>PAGE</address-full-policy>
<message-counter-history-day-limit>10</message-counter-history-day-limit>
</address-setting>
</address-settings>
<jms-connection-factories>
<connection-factory name="InVmConnectionFactory">
<connectors>
<connector-ref connector-name="in-vm"/>
</connectors>
<entries>
<entry name="java:/ConnectionFactory"/>
</entries>
</connection-factory>
<connection-factory name="RemoteConnectionFactory">
<connectors>
<connector-ref connector-name="netty"/>
</connectors>
<entries>
<entry name="java:jboss/exported/jms/RemoteConnectionFactory"/>
</entries>
</connection-factory>
<pooled-connection-factory name="hornetq-ra">
<transaction mode="xa"/>
<connectors>
<connector-ref connector-name="in-vm"/>
</connectors>
<entries>
<entry name="java:/JmsXA"/>
</entries>
</pooled-connection-factory>
</jms-connection-factories>
<jms-destinations>
<jms-queue name="ExpiryQueue">
<entry name="java:/jms/queue/ExpiryQueue"/>
</jms-queue>
<jms-queue name="DLQ">
<entry name="java:/jms/queue/DLQ"/>
</jms-queue>
</jms-destinations>
</hornetq-server>
</subsystem>
के बाद एक ही फाइल में सॉकेट बाइंडिंग हैं Jboss ईएपी 6.3 में org.jnp.interfaces.NamingContextFactory वर्ग देखें:
prop.put(Context.PROVIDER_URL,"localhost:5445");
prop.put(Context.INITIAL_CONTEXT_FACTORY,"org.hornetq.core.remoting.impl.netty.NettyConnectorFactory");
prop.put(Context.URL_PKG_PREFIXES,"org.jboss.naming:org.jnp.interfaces");
वर्तमान मुद्दों ntly, यह कनेक्शन अपवाद फेंक रहा है।
क्या कोई भी जेबॉस ईएपी 6.3 में हॉर्नेटक के साथ कनेक्शन प्राप्त करने के तरीके पर जावा कार्यक्रम का सुझाव दे सकता है या सबमिट कर सकता है?
अद्यतन: मुझे अभी भी पता नहीं है कि मैं ऐसा करने की सही प्रक्रिया का पालन कर रहा हूं या नहीं।
javax.naming.NamingException: JBAS011843: Failed instantiate InitialContextFactory org.jnp.interfaces.NamingContextFactory from classloader ModuleClassLoader for Module
मैं बिन/ग्राहक अपने jboss-client.jar जांच की और पाया ऊपर इंटरफ़ेस वहाँ मौजूद नहीं है, लेकिन पिछले संस्करणों जो jbiss शामिल में मौजूद है है
बाद अपवाद जो मैं हो रही है -allclient.jar। मुझे नहीं लगता कि इस जब्स संस्करण में यह करना सही है।
यदि आप एक पूर्ण स्टैकट्रैक जोड़ते हैं तो यह सहायक हो सकता है। –
@ मार्टिनबामगार्टनर मैंने उपरोक्त अपवाद अपडेट किए हैं। यह बेहतर होगा अगर मैं जानकारी प्राप्त कर सकूं कि किस रणनीति पर मैं उपरोक्त दो स्निपेट में पालन करूँगा और कौन सा सही है या क्या मुझे उपरोक्त में से कोई भी पालन नहीं करना चाहिए? – fatherazrael
ध्यान रखें, मुझे लगता है कि आप संदेश कतार और आपके Initialcontext-config के लिए पोर्ट 5445 का उपयोग करने का प्रयास करते हैं। वे दोनों एक ही बंदरगाह पर काम नहीं कर सकते हैं। मुझे लगता है कि आप अपने प्रारंभिक कॉन्टैक्ट के लिए गलत बंदरगाह का उपयोग कर रहे हैं। –