Ich benutze Jboss EAP 6.3 und muss Messaging-Funktion verwenden. Ich habe gearbeitet in Jboss 4x, wo wir Verbindung einfach folgenden Code machen:Schreiben Sie ein Java-Programm, um in Jboss EAP 6.3 eine Verbindung zum HornetQ-Messaging-Dienst herzustellen?
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;
}
Wird über Art und Weise der Arbeit in EAP 6.3 verbinden HornetQ? Wenn ja, welche anderen Konfigurationen sind erforderlich? Auch ich fand 1099 ist auch nicht standardmäßig in standalone.xml konfiguriert.
Im Folgenden sind von Standardeinstellung für HornetQ getan in Standalone-full.xml Datei:
<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>
Im Folgenden sind Socket-Bindungen in derselben Datei:
<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"/>
Ich habe versucht, es wie unten, weil nicht in der Lage zu siehe org.jnp.interfaces.NamingContextFactory Klasse in Jboss EAP 6.3:
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");
Curre Es wirft nur Connection Exception.
Könnte jemand bitte vorschlagen oder ein Java-Programm zur Verbindung mit Hornetq in Jboss EAP 6.3 vorschlagen?
Update: Ich weiß immer noch nicht, ob ich die richtige Vorgehensweise der gleichen zu folgen bin.
Es folgt Ausnahmen, die ich erhalte:
javax.naming.NamingException: JBAS011843: Failed instantiate InitialContextFactory org.jnp.interfaces.NamingContextFactory from classloader ModuleClassLoader for Module
ich seine jboss-client.jar in bin/Client und fand überprüft haben, die obige Schnittstelle dort nicht vorhanden ist, aber in früheren Versionen vorhanden ist, die jbiss enthält -allclient.jar. Ich glaube nicht, dass das in dieser jboss-Version richtig ist.
Es könnte hilfreich sein, wenn Sie einen vollständigen Stacktrace hinzufügen. –
@MartinBaumgartner Ich habe Ausnahmen oben aktualisiert. Es wird besser sein, wenn ich Informationen darüber bekommen kann, welche Strategie ich in zwei Schnipsel folgen soll und welche ist richtig oder sollte ich keiner der obigen folgen? – fatherazrael
Passen Sie auf, ich denke, Sie versuchen, den Port 5445 für die Nachrichtenwarteschlange und Ihre Initialcontext-Konfiguration zu verwenden. Beide können nicht am selben Port arbeiten. Ich denke du verwendest den falschen Port für deinen initialContext. –