Comment vais-je envoyer des messages à Activemq
Je n'ai jamais travailler sur JMS
. Récemment, j'ai téléchargé Activemq
et changé de port à partir de 61616
à 61617
dans tous les conf/activemq-*.xml
fichiers.Je exécutez la commande suivante à partir de l'invite de commande et ouvrir la page de la console du navigateur.
C:\Users\Infratab Bangalore\Desktop\Queueing\apache-activemq-5.8.0\bin>activemq
Maintenant, je veux envoyer des messages à partir du code java à l'aide de JMS
à Activemq
.Pour ce que j'ai écrit le code suivant. Et exécuter mon code en utilisant un serveur Apache Tomcat.il ne fonctionne pas
Ce code est mis en œuvre dans Eclipse.
package PackageName;
import java.io.IOException;
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.Queue;
import javax.jms.Session;
import javax.jms.TextMessage;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.activemq.ActiveMQConnectionFactory;
public class MessageProducer extends HttpServlet {
@Override
protected void service(HttpServletRequest arg0, HttpServletResponse arg1) throws ServletException, IOException {
try {
//created ConnectionFactory object for creating connection
ConnectionFactory factory = new ActiveMQConnectionFactory("admin", "admin", "tcp://localhost:61617");
//Establish the connection
Connection connection = factory.createConnection();
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
Queue queue = session.createQueue("Test");
//Added as a producer
javax.jms.MessageProducer producer = session.createProducer(queue);
//Create and send the message
TextMessage msg = session.createTextMessage();
msg.setText("TestMessage");
producer.send(msg);
} catch (Exception e) {
//TODO: handle exception
}
}
}
J'obtiens l'erreur suivante
java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
org.apache.activemq.ActiveMQPrefetchPolicy.<clinit>(ActiveMQPrefetchPolicy.java:30)
org.apache.activemq.ActiveMQConnectionFactory.<init>(ActiveMQConnectionFactory.java:88)
PackageName.MessageProducer.service(MessageProducer.java:20)
javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
pouvez-vous me suggérer, où j'ai écrit mal.
Grâce.
Le ActiveMQ est probablement à l'aide de commons-logging.jar mais il semble qu'il n'est pas trouvé dans votre classpath. Vérifier ça
J'ai ajouté trois .les fichiers jar dans mon dossier lib noms sont
Oui, on dirait que vous n'êtes pas à l'aide de maven, alors vous devez télécharger le commons-logging.jar et d'ajouter à votre classhpath, exactement comme vous l'avez fait avec le activemq-all-5.0.0.jar
J'ai ajouté
je pense que vous devriez lire que pour comprendre ce que je dis: stackoverflow.com/questions/325524/...
J'ai ajouté trois .les fichiers jar dans mon dossier lib noms sont
activemq-all-5.0.0.jar
, commons-io-2.4.jar
, geronimo-spec-corba-1.0.jar
.J'ai ajouté le chemin d'accès suivant dans le classPath. C:\Users\Infratab Bangalore\Desktop\Queueing\geronimo-spec-corba-1.0.jar;
.Ainsi suis-je besoin d'ajouter commons-logging.jar
dans mon classpath.Si je dois ajouter encore, je tiens à le télécharger.est-il justeOui, on dirait que vous n'êtes pas à l'aide de maven, alors vous devez télécharger le commons-logging.jar et d'ajouter à votre classhpath, exactement comme vous l'avez fait avec le activemq-all-5.0.0.jar
J'ai ajouté
activemq-all-5.0.0.jar
dans mon dossier lib pas dans le classpath.pouvez-vous voir le commentaire que j'ai mis sur @Ashish réponse.je pense que vous devriez lire que pour comprendre ce que je dis: stackoverflow.com/questions/325524/...
OriginalL'auteur Hanumath | 2013-08-08
Vous devez vous connecter pour publier un commentaire.
Télécharger commun d'enregistrement.ja r fichier de
http://grepcode.com/snapshot/repo1.maven.org/maven2/commons-logging/commons-logging/1.1.3/
et la placer dans votre classpath et de courir à nouveau.
commons-logging-1.1.3.zip
fichier et placé sousC:\Users\Infratab Bangalore\Desktop\Queueing
dossier. J'ai ajouté au classpath commeC:\Users\Infratab Bangalore\Desktop\Queueing\commons-logging-1.1.3
.J'ai redémarré mon eclipse,encore qu'il ne fonctionne pas.J'ai ajouté
commons-logging-1.1.3.jar
fichier dans mon dossier lib.C'est génial de travailler.si sa fonctionne bien, alors vous pouvez accepter mon ans.
OriginalL'auteur Ashish Aggarwal
Le message est à partir de la ligne 38 de ActiveMQPrefetchPolicy qui se produit lors de l'initialisation de la classe (en raison c'est un champ statique) (exemple de la ligne dans grepcode
http://grepcode.com/file/repository.springsource.com/org.apache.activemq/com.springsource.org.apache.activemq/5.3.0/org/apache/activemq/ActiveMQPrefetchPolicy.java#38 ) . Vous aurez besoin de common-logging.jar comme il s'agit d'une dépendance dans le classpath de votre application à exécuter. Vous pouvez obtenir d'autres erreurs. Je vous recommande de suivre quelques exemples dans l'internet, par exemple dans l'exemple du Chapitre 8 de la ActiveMQ en Action -> http://code.google.com/p/activemq-in-action/source/browse/#svn%2Ftrunk%2Fexamples%2Fchapter8%2Fjms-webapp-jboss%253Fstate%253Dclosed
Ce qui concerne,
Luan
Activemq
.log4j:WARN No appenders could be found for logger (org.apache.activemq.transport.WireFormatNegotiator). log4j:WARN Please initialize the log4j system properly. log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
Comment puis-je réparerOriginalL'auteur lcestari