Quantcast
Channel: Apache Timeline
Viewing all articles
Browse latest Browse all 5648

project not running

$
0
0
Hej everyone,

I've a ready java project. It's supposed to be a small online shop.
Therefore JMS is used.

Now I'm tryjing to make the project run on my pc.

Therefore I've installed ActiveMQ on my pc as descriped on the website:
http://activemq.apache.org/getting-started.html

I can run the server. Everything fine till this step.

The problem ist, that I can not figure out, how to make the projekt run
successfuly.

Here is the code for the sender:

package client;

import java.util.List;
import java.util.Map;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.ObjectMessage;
import javax.jms.Queue;
import javax.jms.QueueConnection;
import javax.jms.QueueConnectionFactory;
import javax.jms.QueueReceiver;
import javax.jms.QueueSender;
import javax.jms.QueueSession;
import javax.jms.Session;
import javax.jms.TemporaryQueue;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;

import client.requestCommand.BestellungAufgebenRequestCommand;
import client.requestCommand.BestellungStornierenRequestCommand;
import client.requestCommand.GetAlleArtikelRequestCommand;
import client.requestCommand.GetAlleBestellungenRequestCommand;
import client.requestCommand.GetEinzelneBestellungRequestCommand;
import client.requestCommand.GetKundendatenRequestCommand;
import client.requestCommand.IstKundeEingeloggtRequestCommand;
import client.requestCommand.LoginRequestCommand;
import client.requestCommand.LogoutRequestCommand;
import client.requestCommand.RequestCommand;
import
client.requestCommand.ueberpruefeObArtikelnummerInArtikelKarteiRequestCommand;
import
client.requestCommand.ueberpruefeObBestellnummerInBestellKarteiRequestCommand;
import model.Artikel;
import model.Bestellposition;
import model.Bestellung;
import model.Kunde;
import service.OrderManager;

/**
* @author

* Erstellungsdatum: 08.05.2014

* Repräsentiert die clientseitige OrderManager_JMS_Adapterklasse. Der
Client spricht über die Menu-Commands
* die OrderManagerJmsClientAdapter-Klasse an und ruft darüber
Request-Commands auf, welche dann in Form einer
* ObjectMessage über ActiveMQ zum Server geschickt werden.

* Die serverseitige OrderManager_JMS_Adapterklasse ist mit einem
Listener versehen und "horcht" ständig nach
* Anfragen. Sobald sie einen Request-Command bekommt führt sie bzw. der
enthaltene OrderManager diese Reqeust-
* Commands aus und sendet das Ergebnis wieder an die
JMS_Client_Adapterklasse zurück.

* Das Ergebnis gelangt dann so über den OrderManagerJmsClientAdapter
wieder zum Client-Menü.

*/
public class OrderManagerJmsAdapterClient implements OrderManager

private static final String DESTINATION = "queue/myQueue1";
private static final String USER = "guest";
private static final String PASSWORD = "guest";
private QueueConnectionFactory factory;
private Queue queue;
private QueueConnection connection;
private QueueSession session;

/**
* JNDI Kontext wird erzeugt, die ConnectionsFactory und Zieladresse
über den Namensdienst ausgelesen

* @throws NamingException
* @throws JMSException
*/
public OrderManagerJmsAdapterClient() throws NamingException,
JMSException

Context ctx = new InitialContext();
factory = (QueueConnectionFactory)
ctx.lookup("ConnectionFactory");
queue = (Queue) ctx.lookup(DESTINATION);

/**
* Die Verbindung zum Server wird aufgebaut. Eine Session und ein
Receiver werden erzeugt.
* Die zu ausführenden RequestCommands werden dann zum Server
geschickt.

* Es wird außerdem eine temporäre Queue für die Antwort erzeugt. Es
wird nun auf eine
* Antwort gewartet. Der Server wird die Antwort über die temporäre
Queue schicken.

* Am Schluss werden alle Ressourcen wieder freigegeben.

* @param command Der auszuführende RequestCommand
* @return response Die Antwort vom Server
*/
private Message MessageSendenUndWartenAufEmpfang(RequestCommand
command)

Message response = null;
TemporaryQueue tempQueue = null;
QueueReceiver receiver = null;
QueueSender sender = null;

try

connection = factory.createQueueConnection(USER, PASSWORD);
session = connection.createQueueSession(false,
Session.AUTO_ACKNOWLEDGE);

tempQueue = session.createTemporaryQueue();
sender = session.createSender(queue);
receiver = session.createReceiver(tempQueue);
connection.start();

ObjectMessage request = session.createObjectMessage();
request.setObject(command);

request.setJMSReplyTo(tempQueue);
sender.send(request);

response = receiver.receive();

catch (JMSException e)

e.printStackTrace();

finally

try

sender.close();
receiver.close();
tempQueue.delete();
session.close();
connection.close();

catch (JMSException e)

e.printStackTrace();

return response;

/**
* {@inheritDoc}
*/
public boolean bestellungAufgeben(Map<Integer, Integer>
artikelUndAnzahl)

try

ObjectMessage response = (ObjectMessage)
MessageSendenUndWartenAufEmpfang(new
BestellungAufgebenRequestCommand(artikelUndAnzahl));

if ((Boolean) response.getObject())

return true;

catch (JMSException e)

e.printStackTrace();

return false;

/**
* {@inheritDoc}
*/
public Map<Integer, Bestellung> bestellungenAnzeigen()

Map<Integer, Bestellung> alleBestellungen = null;

try

ObjectMessage response = (ObjectMessage)
MessageSendenUndWartenAufEmpfang(new GetAlleBestellungenRequestCommand());

alleBestellungen = (Map<Integer, Bestellung>)
response.getObject();

catch (JMSException e)

e.printStackTrace();

return alleBestellungen;

/**
* {@inheritDoc}
*/
public List<Bestellposition> getEinzelneBestellung(int
bestellnummer)

List<Bestellposition> alleBestellpositionen = null;

try

ObjectMessage response = (ObjectMessage)
MessageSendenUndWartenAufEmpfang(new
GetEinzelneBestellungRequestCommand(bestellnummer));

alleBestellpositionen = (List<Bestellposition>)
response.getObject();

catch (JMSException e)

e.printStackTrace();

return alleBestellpositionen;

/**
* {@inheritDoc}
*/
public boolean bestellungStornieren(int bestellnummer)

try

ObjectMessage response = (ObjectMessage)
MessageSendenUndWartenAufEmpfang(new
BestellungStornierenRequestCommand(bestellnummer));

if ((Boolean) response.getObject())

return true;

catch (JMSException e)

e.printStackTrace();

return false;

/**
* {@inheritDoc}
*/
public Kunde getKundendaten()

Kunde derKunde = null;

try

ObjectMessage response = (ObjectMessage)
MessageSendenUndWartenAufEmpfang(new GetKundendatenRequestCommand());

derKunde = (Kunde) response.getObject();

catch (JMSException e)

e.printStackTrace();

return derKunde;

/**
* {@inheritDoc}
*/
public List<Artikel> getAlleArtikel()

List<Artikel> alleArtikel = null;

try

ObjectMessage response = (ObjectMessage)
MessageSendenUndWartenAufEmpfang(new GetAlleArtikelRequestCommand());

alleArtikel = (List<Artikel>) response.getObject();

catch (JMSException e)

e.printStackTrace();

return alleArtikel;

/**
* {@inheritDoc}
*/
public boolean login(String userName, String passwort)

try

ObjectMessage response = (ObjectMessage)
MessageSendenUndWartenAufEmpfang(new LoginRequestCommand(userName,
passwort));

if ((Boolean) response.getObject())

return true;

catch (JMSException e)

e.printStackTrace();

return false;

/**
* {@inheritDoc}
*/
public boolean logout()

try

ObjectMessage response = (ObjectMessage)
MessageSendenUndWartenAufEmpfang(new LogoutRequestCommand());

if ((Boolean) response.getObject())

return true;

catch (JMSException e)

e.printStackTrace();

return false;

/**
* {@inheritDoc}
*/
public boolean istKundeEingeloggt()

try

ObjectMessage response = (ObjectMessage)
MessageSendenUndWartenAufEmpfang(new IstKundeEingeloggtRequestCommand());

if ((Boolean) response.getObject())

return true;

catch (JMSException e)

e.printStackTrace();

return false;

/**
* {@inheritDoc}
*/
public boolean ueberpruefeObArtikelnummerInArtikelKartei(int
artikelnummer)

try

ObjectMessage response = (ObjectMessage)
MessageSendenUndWartenAufEmpfang(new
ueberpruefeObArtikelnummerInArtikelKarteiRequestCommand(artikelnummer));

if ((Boolean) response.getObject())

return true;

catch (JMSException e)

e.printStackTrace();

return false;

/**
* {@inheritDoc}
*/
public boolean ueberpruefeObBestellnummerInBestellKartei(int
bestellnummer)

try

ObjectMessage response = (ObjectMessage)
MessageSendenUndWartenAufEmpfang(new
ueberpruefeObBestellnummerInBestellKarteiRequestCommand(bestellnummer));

if ((Boolean) response.getObject())

return true;

catch (JMSException e)

e.printStackTrace();

return false;

Here I've got some problems:

tempQueue = session.createTemporaryQueue();
The method createTemporaryQueue() is undefined for the type QueueSession

sender = session.createSender(queue);
The method createSender(Queue) is undefined for the type QueueSession

receiver = session.createReceiver(tempQueue);
The method createReceiver(TemporaryQueue) is undefined for the type
QueueSession

ObjectMessage request = session.createObjectMessage();
-The method createObjectMessage() is undefined for the type QueueSession

Here is the code for the receiver:

package main;

import java.io.Serializable;

import javax.jms.JMSException;
import javax.jms.MessageListener;
import javax.jms.ObjectMessage;
import javax.jms.Queue;
import javax.jms.QueueConnection;
import javax.jms.QueueConnectionFactory;
import javax.jms.QueueReceiver;
import javax.jms.QueueSender;
import javax.jms.QueueSession;
import javax.jms.Session;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;

import client.requestCommand.RequestCommand;
import service.OrderManager;

/**
* @author

* Repräsentiert die serverseitige OrderManager_JMS_Adapterklasse.

* Die serverseitige OrderManager_JMS_Adapterklasse ist mit einem Listener
versehen und "horcht" ständig nach
* Anfragen. Sobald sie einen Request-Command bekommt führt sie bzw. der
enthaltene OrderManager diese Reqeust-
* Commands aus und sendet das Ergebnis wieder an die
JMS_Client_Adapterklasse zurück.

*/
public class OrderManagerJmsAdapterServer

private static final String DESTINATION = "queue/myQueue1";
private static final String USER = "guest";
private static final String PASSWORD = "guest";
private QueueConnectionFactory factory;
private Queue queue;
private OrderManager orderManager;
private QueueSession session;
private ObjectMessage objectRequest;

/**
* JNDI Kontext wird erzeugt, die ConnectionsFactory und Zieladresse
über den Namensdienst auslesen

* @param orderManager Der OrderManager
* @throws NamingException
* @throws JMSException
*/
public OrderManagerJmsAdapterServer(OrderManager orderManager) throws
NamingException, JMSException

this.orderManager = orderManager;
Context ctx = new InitialContext();
factory = (QueueConnectionFactory) ctx.lookup("ConnectionFactory");
queue = (Queue) ctx.lookup(DESTINATION);
serverStartenUndaufEingehendeObjectMessagesWarten();

/**
* Die Verbindung zum Server wird aufgebaut. Eine Session und Receiver
wird erzeugt.
* Der Server horcht nach eingehenden Messages.

* @throws JMSException
*/
public void serverStartenUndaufEingehendeObjectMessagesWarten() throws
JMSException

QueueConnection connection = factory.createQueueConnection(USER,
PASSWORD);
session = connection.createQueueSession(false,
Session.AUTO_ACKNOWLEDGE);
QueueReceiver receiver = session.createReceiver(queue);
connection.start();
System.out.println("----------Server gestartet----------");

while (true)

objectRequest = (ObjectMessage) receiver.receive();
kommandosAusfuehrenUndErgebnisZurueck((RequestCommand)
objectRequest.getObject());

/**
* Die einkommenden RequestCommands werden über den OrderManager
ausgeführt. Das Ergebnis
* wird dann über die vom Client erzeugte temporäre Queue zurück zum
Client gesendet.
* @param objekt
*/
private void kommandosAusfuehrenUndErgebnisZurueck(RequestCommand
objekt)

objekt.setOrderManager(orderManager);
Object objektAusfuehren = objekt.execute();

Queue tempQueue;
try

tempQueue = (Queue) objectRequest.getJMSReplyTo();
ObjectMessage response = session.createObjectMessage();
response.setObject((Serializable) objektAusfuehren);
QueueSender sender = session.createSender(tempQueue);
sender.send(response);

catch (JMSException e)

e.printStackTrace();

The method createReceiver(Queue) is undefined for the type QueueSession

QueueReceiver receiver = session.createReceiver(queue);

I would be very thanfull, if you could help me to fix the project.

I've uploaded the whole project on my dropbox. Check it out, if you like to
help me: https://www.dropbox.com/s/b4clafl4oun56mw/JMS_ACTIVEMQ.zip

Regards, Mirage16

Viewing all articles
Browse latest Browse all 5648

Trending Articles