Hi,
ich wollte zum Einarbeiten in Seam und JMS im Speziellen eine kleine Mini-Chat-Anwendung schreiben in der 2 Chatter miteinander kommunizieren können. (Bin Anfänger in J2EE allgemein).
Dazu sollen 2 MDBs aus 2 verschiedenen Queues die Messages rausholen bzw. hineinpacken.
Für das Beispiel reicht aber erstmal 1 Sender, 1 Queue, 1 Empfänger, 1 EmpfängerPostfach, 1 View.
Bisher habe ich das folgendermaßen gehandhabt (ich gehe davon aus, dass es der falsche Ansatz ist, aber ich wollte wissen ob es auch so klappt) :
Sender :
Empfänger :
EmpfängerPostfach
View :
Bisher wird der Text nur als outputtext ausgegeben, was nur zu Testzwecken dienen soll (das funktioniert aber nicht aufgrund des fehlerhaften Codes im View nehm ich an). Eigentlich wollte ich die Messages untereinander in
Textfeldern oder Listboxen ausgeben lassen, weiß aber nicht wie das anzustellen ist
Ausserdem ist das mit dem Singleton nur eine Notlösung weil ich auch nicht wusste wie man MDBs aus dem View aus sonst ansprechen kann.
Meine Fragen :
1.) Wie geht man mit Listboxen in Seam um ?
2.) Ist es einfach die von einer MDB empfangene Message an eine Listbox weiterzuleiten ?
Bin am Verzweifeln... besten Dank für jeden Tipp im Voraus !
Herzliche Grüße,
Tonteria
ich wollte zum Einarbeiten in Seam und JMS im Speziellen eine kleine Mini-Chat-Anwendung schreiben in der 2 Chatter miteinander kommunizieren können. (Bin Anfänger in J2EE allgemein).
Dazu sollen 2 MDBs aus 2 verschiedenen Queues die Messages rausholen bzw. hineinpacken.
Für das Beispiel reicht aber erstmal 1 Sender, 1 Queue, 1 Empfänger, 1 EmpfängerPostfach, 1 View.
Bisher habe ich das folgendermaßen gehandhabt (ich gehe davon aus, dass es der falsche Ansatz ist, aber ich wollte wissen ob es auch so klappt) :
Sender :
PHP:
package org.domain.chat.session;
import javax.jms.QueueSender;
import javax.jms.QueueSession;
import org.jboss.seam.annotations.In;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Scope;
import org.jboss.seam.ScopeType;
@Name("chatterone")
@Scope(ScopeType.CONVERSATION)
public class ChatterOne {
@In
private QueueSender aQueueSender;
@In(create = true)
private QueueSession queueSession;
public void sendMessage() {
try {
aQueueSender.send(queueSession.createTextMessage("Test!"));
} catch (Exception e) {
System.out.println("aaaaaarrrggghhhh");
}
}
}
Empfänger :
PHP:
package org.domain.chat.session;
import javax.ejb.MessageDriven;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.TextMessage;
import javax.ejb.ActivationConfigProperty;
import org.jboss.beans.metadata.api.annotations.Inject;
import org.jboss.seam.annotations.In;
import org.jboss.seam.annotations.Name;
@Name("chattertworeceiver")
@MessageDriven(name = "chatterTwoReceiver", activationConfig = {
@ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue"),
@ActivationConfigProperty(propertyName = "destination", propertyValue = "queue/chatQueue") })
public class ChatterTwoReceiver implements MessageListener {
@In(create=true)
public ChatterTwoInbox inbox;
public void onMessage(Message message) {
TextMessage textMsg = (TextMessage) message;
System.out.println(textMsg);
try {
inbox.setValue(textMsg.getText());
} catch (JMSException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
EmpfängerPostfach
PHP:
package org.domain.chat.session;
import org.jboss.seam.annotations.Name;
@Name("chattertwoinbox")
public class ChatterTwoInbox {
public String value;
public ChatterTwoInbox() {
}
public void setValue(String string) {
this.value=string;
System.out.println(string);
}
public String getValue(){
return value;
}
}
View :
HTML:
<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:s="http://jboss.com/products/seam/taglib"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:rich="http://richfaces.org/rich"
xmlns:a4j="http://richfaces.org/a4j"
template="layout/template.xhtml">
<ui:define name="body">
<h:form>
<rich:panel>
<h:panelGrid columns="2">
<h:graphicImage value="/img/seamlogo.png" alt="Seam logo"/>
<s:div styleClass="info">
<p><strong>Chat</strong></p>
<ul class="bullets">
<li><a4j:commandButton value="start chat" action="#{chatterone.sendMessage}" reRender="a"/></li>
<h:outputText id="a" value="#{chattertwoinbox.value}" />
</ul>
</s:div>
</h:panelGrid>
</rich:panel>
</h:form>
</ui:define>
</ui:composition>
Bisher wird der Text nur als outputtext ausgegeben, was nur zu Testzwecken dienen soll (das funktioniert aber nicht aufgrund des fehlerhaften Codes im View nehm ich an). Eigentlich wollte ich die Messages untereinander in
Textfeldern oder Listboxen ausgeben lassen, weiß aber nicht wie das anzustellen ist

Ausserdem ist das mit dem Singleton nur eine Notlösung weil ich auch nicht wusste wie man MDBs aus dem View aus sonst ansprechen kann.
Meine Fragen :
1.) Wie geht man mit Listboxen in Seam um ?
2.) Ist es einfach die von einer MDB empfangene Message an eine Listbox weiterzuleiten ?
Bin am Verzweifeln... besten Dank für jeden Tipp im Voraus !
Herzliche Grüße,
Tonteria
Zuletzt bearbeitet: