2015-06-16 17 views
6

मैं जेबॉस ईएपी 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। मुझे नहीं लगता कि इस जब्स संस्करण में यह करना सही है।

+0

यदि आप एक पूर्ण स्टैकट्रैक जोड़ते हैं तो यह सहायक हो सकता है। –

+0

@ मार्टिनबामगार्टनर मैंने उपरोक्त अपवाद अपडेट किए हैं। यह बेहतर होगा अगर मैं जानकारी प्राप्त कर सकूं कि किस रणनीति पर मैं उपरोक्त दो स्निपेट में पालन करूँगा और कौन सा सही है या क्या मुझे उपरोक्त में से कोई भी पालन नहीं करना चाहिए? – fatherazrael

+0

ध्यान रखें, मुझे लगता है कि आप संदेश कतार और आपके Initialcontext-config के लिए पोर्ट 5445 का उपयोग करने का प्रयास करते हैं। वे दोनों एक ही बंदरगाह पर काम नहीं कर सकते हैं। मुझे लगता है कि आप अपने प्रारंभिक कॉन्टैक्ट के लिए गलत बंदरगाह का उपयोग कर रहे हैं। –

उत्तर

0

this jboss लिंक पर क्लिक करें; जिसमें क्विकस्टार्ट प्रोग्राम शामिल है जो उल्लिखित समस्या का समाधान करता है।

1) कोड डाउनलोड करें; Netbeans में jboss-helloworld-jms चलाने के pom.xml आयात करें। स्वच्छ निर्माण चलाएं।

2) Maven समस्याओं निर्माण को हल करने के लिए इस लिंक का उपयोग करें: Pom not found

3) के बाद टुकड़ा है जो सर्वर

private static final String DEFAULT_MESSAGE = "Hello, World!"; 
private static final String DEFAULT_CONNECTION_FACTORY = "jms/RemoteConnectionFactory"; 
private static final String DEFAULT_DESTINATION = "jms/queue/test"; 
private static final String DEFAULT_MESSAGE_COUNT = "1"; 
private static final String DEFAULT_USERNAME = "quickstartUser"; 
private static final String DEFAULT_PASSWORD = "quickstartPwd1!"; 
private static final String INITIAL_CONTEXT_FACTORY = "org.jboss.naming.remote.client.InitialContextFactory"; 
private static final String PROVIDER_URL = "remote://localhost:4447"; 

String connectionFactoryString = System.getProperty("connection.factory", DEFAULT_CONNECTION_FACTORY); 
log.info("Attempting to acquire connection factory \"" + connectionFactoryString + "\""); 
connectionFactory = (ConnectionFactory) context.lookup(connectionFactoryString); 
log.info("Found connection factory \"" + connectionFactoryString + "\" in JNDI"); 

4) उपयोगकर्ता बनाएँ "quickstartUser"/"quickstartPwd1 से कनेक्ट करने के लिए प्रयोग किया जाता है! ", जेबॉस ईएपी 6.3 में; adduser का उपयोग कर।आवेदन क्षेत्र में बल्ले

5) जांचें कि क्या ये जेएमएस/कतार/परीक्षण और जेएम/रिमोटकनेक्शन फैक्ट्री स्टैंडअलोन.एक्सएमएल में मौजूद है या नहीं।

6) सरल जावा एप्लिकेशन और जादू के रूप में कोड चलाएं।

0

अपने स्टैकट्रेस के अनुसार मैं मान लें कि आपके JBoss ईएपी अपने पुराने JNDI सेटिंग्स माहिर नहीं था 6.3

से: http://blog.akquinet.de/2014/09/26/jboss-eap-wildfly-three-ways-to-invoke-remote-ejbs/

Properties prop = new Properties(); 

prop.put(Context.INITIAL_CONTEXT_FACTORY, "org.jboss.naming.remote.client.InitialContextFactory"); 

prop.put(Context.PROVIDER_URL, "http-remoting://127.0.0.1:8080"); 
prop.put(Context.SECURITY_PRINCIPAL, "username"); 
prop.put(Context.SECURITY_CREDENTIALS, "password"); 

prop.put("jboss.naming.client.ejb.context", false); 
prop.put(Context.URL_PKG_PREFIXES, "org.jboss.ejb.client.naming"); 

Context context = new InitialContext(prop); 

आपका आवेदन नहीं कर सकते InitialContext है, जो एक समस्या आपको चाहिए है दृष्टांत ध्यान केंद्रित करना।

इसके अलावा, यह मेरे लिए थोड़े अजीब लग रहा है कि संदेश कतार और आपकी जेएनडीआई स्थानीयहोस्ट को जोड़ने की कोशिश कर रहा है: 5445।

+0

यह कहता है: कनेक्शन फैक्टरी - सेवा jboss.naming.context.java.jboss.exported.ConnectionFactory – fatherazrael

+0

कृपया पूर्ण स्टैकट्रैस जोड़ें, जो वास्तव में सहायक होगा। इसके अलावा, अक्सर अंतिम अपवाद संदेश की तुलना में लॉग में अधिक जानकारी होती है, साथ ही कोड विफल होने के कारण भी अच्छा होगा। –

संबंधित मुद्दे