<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="hu">
	<id>https://vik.wiki/index.php?action=history&amp;feed=atom&amp;title=Szoftverfejleszt%C3%A9s_J2EE_platformon_-_Labor%3A_JMS</id>
	<title>Szoftverfejlesztés J2EE platformon - Labor: JMS - Laptörténet</title>
	<link rel="self" type="application/atom+xml" href="https://vik.wiki/index.php?action=history&amp;feed=atom&amp;title=Szoftverfejleszt%C3%A9s_J2EE_platformon_-_Labor%3A_JMS"/>
	<link rel="alternate" type="text/html" href="https://vik.wiki/index.php?title=Szoftverfejleszt%C3%A9s_J2EE_platformon_-_Labor:_JMS&amp;action=history"/>
	<updated>2026-05-17T20:37:45Z</updated>
	<subtitle>Az oldal laptörténete a wikiben</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://vik.wiki/index.php?title=Szoftverfejleszt%C3%A9s_J2EE_platformon_-_Labor:_JMS&amp;diff=157036&amp;oldid=prev</id>
		<title>David14: David14 átnevezte a(z) JMS labor lapot a következő névre: Szoftverfejlesztés J2EE platformon - Labor: JMS</title>
		<link rel="alternate" type="text/html" href="https://vik.wiki/index.php?title=Szoftverfejleszt%C3%A9s_J2EE_platformon_-_Labor:_JMS&amp;diff=157036&amp;oldid=prev"/>
		<updated>2013-02-06T00:20:45Z</updated>

		<summary type="html">&lt;p&gt;David14 átnevezte a(z) &lt;a href=&quot;/index.php?title=JMS_labor&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;JMS labor (a lap nem létezik)&quot;&gt;JMS labor&lt;/a&gt; lapot a következő névre: &lt;a href=&quot;/Szoftverfejleszt%C3%A9s_J2EE_platformon_-_Labor:_JMS&quot; title=&quot;Szoftverfejlesztés J2EE platformon - Labor: JMS&quot;&gt;Szoftverfejlesztés J2EE platformon - Labor: JMS&lt;/a&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;hu&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Régebbi változat&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;A lap 2013. február 6., 02:20-kori változata&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;4&quot; class=&quot;diff-notice&quot; lang=&quot;hu&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(Nincs különbség)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;!-- diff cache key my_wiki:diff:1.41:old-145735:rev-157036 --&gt;
&lt;/table&gt;</summary>
		<author><name>David14</name></author>
	</entry>
	<entry>
		<id>https://vik.wiki/index.php?title=Szoftverfejleszt%C3%A9s_J2EE_platformon_-_Labor:_JMS&amp;diff=145735&amp;oldid=prev</id>
		<title>Unknown user: Új oldal, tartalma: „{{GlobalTemplate|Valaszthato|J2EELaborJMS}}    __TOC__  JMS API: javax.jms. * ConnectionFactory * Connection * Session * Queue  {{InLineFileLink|Valaszthato|J2EELaborJM…”</title>
		<link rel="alternate" type="text/html" href="https://vik.wiki/index.php?title=Szoftverfejleszt%C3%A9s_J2EE_platformon_-_Labor:_JMS&amp;diff=145735&amp;oldid=prev"/>
		<updated>2012-10-22T11:40:46Z</updated>

		<summary type="html">&lt;p&gt;Új oldal, tartalma: „{{GlobalTemplate|Valaszthato|J2EELaborJMS}}    __TOC__  JMS API: javax.jms. * ConnectionFactory * Connection * Session * Queue  {{InLineFileLink|Valaszthato|J2EELaborJM…”&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Új lap&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{GlobalTemplate|Valaszthato|J2EELaborJMS}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
JMS API: javax.jms.&lt;br /&gt;
* ConnectionFactory&lt;br /&gt;
* Connection&lt;br /&gt;
* Session&lt;br /&gt;
* Queue&lt;br /&gt;
&lt;br /&gt;
{{InLineFileLink|Valaszthato|J2EELaborJMS|JMS_handout.doc|JMS_handout.doc}}: JMS segédlet&lt;br /&gt;
&lt;br /&gt;
==Sorok konfigurációja==&lt;br /&gt;
&lt;br /&gt;
Admin Console / Configuration / Java Message Service / Physical Destinations&lt;br /&gt;
* New...; vicc_air_req: queue&lt;br /&gt;
* New...; vicc_air_resp: queue&lt;br /&gt;
* New...; vicc_air_dflight: topic&lt;br /&gt;
&lt;br /&gt;
Resources / JMS Resources / Connection Factories&lt;br /&gt;
* New...; JNDI Name: jms/ViccAirCFactory; Type: javax.jms.ConnectionFactory&lt;br /&gt;
&lt;br /&gt;
Resources / JMS Resources / Destination Resources&lt;br /&gt;
* New...; JNDI Name: jms/ViccAirRequest; Type: javax.jms.Queue; Name: vicc_air_req&lt;br /&gt;
* New...; JNDI Name: jms/ViccAirResponse; Type: javax.jms.Queue; Name: vicc_air_resp&lt;br /&gt;
* New...; JNDI Name: jms/ViccAirDFlight; Type: javax.jms.Topic; Name: vicc_air_dflight&lt;br /&gt;
&lt;br /&gt;
==Félkész projektek==&lt;br /&gt;
&lt;br /&gt;
Nyissuk meg a {{InLineFileLink|Valaszthato|J2EELaborJMS|viccair.zip|Vicc_air}} projektet, azon belul a Vicc_air-ejb / EnterpriseBean / TicketHandlerMDB beant.&lt;br /&gt;
Erdemes megnezni, hogy kellett EJB 2.1-ben Message Driven Bean-t hivni (sendJMSMessageToPartnerResponseDestination metodus) &amp;amp;mdash; ilyet nem kell csinalni EJB3-ban. :)&lt;br /&gt;
&lt;br /&gt;
Nyissuk meg a {{InLineFileLink|Valaszthato|J2EELaborJMS|travel.zip|Travel}} projektet es oldjuk fel a referencia problemakat.&lt;br /&gt;
Travel / Java EE Modules-on belul nyissuk meg a Travel-ejb.jar-t es a Travel-war.war-t.&lt;br /&gt;
Oldjuk fel a tovabbi referencia problemakat. A szukseges jar-ok a Travel es a displaytag konyvtarakban vannak.&lt;br /&gt;
&lt;br /&gt;
A Travel-ejb-ben a TicketOrderBean tartalmazza az uzenetformatumot.&lt;br /&gt;
&lt;br /&gt;
==Session bean==&lt;br /&gt;
&lt;br /&gt;
Az OrderHandlerBean-t fogjuk kiegészíteni.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Erőforrás injektálás:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;@PersistenceContext&lt;br /&gt;
private EntityManager em;&lt;br /&gt;
&lt;br /&gt;
@Resource(mappedName=&amp;quot;jms/ViccAirCFactory&amp;quot;)&lt;br /&gt;
private ConnectionFactory cf;&lt;br /&gt;
&lt;br /&gt;
@Resource(mappedName=&amp;quot;jms/ViccAirRequest&amp;quot;)&lt;br /&gt;
private Queue request;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Foglalás bejegyzése:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;public void createNewOrder(Orders orderData) {&lt;br /&gt;
	 orderData.setStatus(0);&lt;br /&gt;
	 em.persist(orderData);&lt;br /&gt;
		  &lt;br /&gt;
	 Connection conn = null;&lt;br /&gt;
	 Session session = null;&lt;br /&gt;
	 try {&lt;br /&gt;
		  conn = cf.createConnection();&lt;br /&gt;
		  session = conn.createSession(false, Session.AUTO_ACKNOWLEDGE);&lt;br /&gt;
&lt;br /&gt;
		  MessageProducer producer = session.createProducer(request);&lt;br /&gt;
&lt;br /&gt;
		  TicketOrderBean b = new TicketOrderBean();&lt;br /&gt;
		  b.setCustomername(orderData.getCustomername());&lt;br /&gt;
		  b.setDepart(orderData.getDepart());&lt;br /&gt;
		  b.setFlightId(orderData.getFlightId());&lt;br /&gt;
		  b.setOrderId(orderData.getOrderId());&lt;br /&gt;
		  b.setSeats(orderData.getSeats());&lt;br /&gt;
		  b.setStatus(orderData.getStatus());&lt;br /&gt;
&lt;br /&gt;
		  Message message = session.createObjectMessage(b);&lt;br /&gt;
		  producer.send(message);&lt;br /&gt;
	 }&lt;br /&gt;
	 ...&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Foglalások listázása:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;public List&amp;lt;Orders&amp;gt; getOrders() {&lt;br /&gt;
	 return em.createQuery(&amp;quot;SELECT o FROM Orders o&amp;quot;).getResultList();&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Foglalás státuszának módosítása:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;public void updateOrderStatus(Integer orderId, Integer statusId) {&lt;br /&gt;
	 Orders o = em.find(Orders.class, orderId);&lt;br /&gt;
	 o.setStatus(statusId);&lt;br /&gt;
	 em.persist(o);&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Deployoljuk a két alkalmazást. Ha nem találja a jdbc/sample-t:&lt;br /&gt;
* Admin Console / Resources / JDBC / Connection Pools / New...&lt;br /&gt;
** Name: SamplePool&lt;br /&gt;
** DataSource Classname: org.apache.derby.jdbc.ClientDataSource&lt;br /&gt;
** Resource Type: javax.sql.DataSource&lt;br /&gt;
** ServerName: localhost&lt;br /&gt;
** DatabaseName: sample&lt;br /&gt;
** User: app&lt;br /&gt;
** Password: app&lt;br /&gt;
** PortNumber: 1527&lt;br /&gt;
* Admin Console / Resources / JDBC / JDBC Resources / New...&lt;br /&gt;
** JNDI Name: jdbc/sample&lt;br /&gt;
** Pool Name: SamplePool&lt;br /&gt;
&lt;br /&gt;
Futtatás: http://zone6:8080/Travel-war/&lt;br /&gt;
&lt;br /&gt;
==Message-driven bean a foglaláshoz==&lt;br /&gt;
&lt;br /&gt;
A foglaláshoz tartozó üzleti logika nagyon egyszerű:&lt;br /&gt;
* 20 másodpercig várakozó állapotban van;&lt;br /&gt;
* ha legfeljebb 10 ülést foglaltak, elfogadja;&lt;br /&gt;
* különben elutasítja a ViccAir.&lt;br /&gt;
&lt;br /&gt;
Travel-ejb / New... / Message Driven Bean&lt;br /&gt;
* Name: PartnerResponse&lt;br /&gt;
* Package: hu.bme.aait&lt;br /&gt;
* Type: Queue&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;@MessageDriven(mappedName = &amp;quot;jms/ViccAirResponse&amp;quot;, activationConfig =  {&lt;br /&gt;
	 @ActivationConfigProperty(propertyName = &amp;quot;acknowledgeMode&amp;quot;, propertyValue = &amp;quot;Auto-acknowledge&amp;quot;),&lt;br /&gt;
	 @ActivationConfigProperty(propertyName = &amp;quot;destinationType&amp;quot;, propertyValue = &amp;quot;javax.jms.Queue&amp;quot;)&lt;br /&gt;
})&lt;br /&gt;
public class PartnerResponse implements MessageListener {&lt;br /&gt;
	 &lt;br /&gt;
	 @EJB&lt;br /&gt;
	 OrderHandlerLocal order;&lt;br /&gt;
	 &lt;br /&gt;
	 /** Creates a new instance of PartnerResponse */&lt;br /&gt;
	 public PartnerResponse() {&lt;br /&gt;
	 }&lt;br /&gt;
	 &lt;br /&gt;
	 public void onMessage(Message message) {&lt;br /&gt;
		  System.out.println(&amp;quot;Jott valasz: &amp;quot; + message);&lt;br /&gt;
		  if (message instanceof ObjectMessage) {&lt;br /&gt;
				try {&lt;br /&gt;
					 TicketOrderBean b = (TicketOrderBean) ((ObjectMessage)message).getObject();&lt;br /&gt;
					 System.out.println(&amp;quot;OrderId: &amp;quot; + b.getOrderId() + &amp;quot; status: &amp;quot; + b.getStatus());&lt;br /&gt;
					 order.updateOrderStatus(b.getOrderId(), b.getStatus());&lt;br /&gt;
				} catch (Exception e) {&lt;br /&gt;
					 throw new RuntimeException(e);&lt;br /&gt;
				}&lt;br /&gt;
		  } else {&lt;br /&gt;
				System.out.println(&amp;quot;Nem Objectmessage!&amp;quot; + message.getClass());&lt;br /&gt;
		  }&lt;br /&gt;
	 }&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tesztelés: http://zoneX:8080/Travel-war/&lt;br /&gt;
&lt;br /&gt;
==Message-driven bean a járat törléshez==&lt;br /&gt;
&lt;br /&gt;
A járat státuszának azonnal át kell íródnia töröltre (-2).&lt;br /&gt;
&lt;br /&gt;
Travel-ejb / New... / Message Driven Bean&lt;br /&gt;
* Name: DeletedFlights&lt;br /&gt;
* Package: hu.bme.aait&lt;br /&gt;
* Type: Topic&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;@MessageDriven(mappedName = &amp;quot;jms/ViccAirDFlights&amp;quot;, activationConfig =  {&lt;br /&gt;
	 @ActivationConfigProperty(propertyName = &amp;quot;acknowledgeMode&amp;quot;, propertyValue = &amp;quot;Auto-acknowledge&amp;quot;),&lt;br /&gt;
	 @ActivationConfigProperty(propertyName = &amp;quot;destinationType&amp;quot;, propertyValue = &amp;quot;javax.jms.Topic&amp;quot;),&lt;br /&gt;
	 @ActivationConfigProperty(propertyName = &amp;quot;subscriptionDurability&amp;quot;, propertyValue = &amp;quot;Durable&amp;quot;),&lt;br /&gt;
	 @ActivationConfigProperty(propertyName = &amp;quot;clientId&amp;quot;, propertyValue = &amp;quot;DeletedFlights&amp;quot;),&lt;br /&gt;
	 @ActivationConfigProperty(propertyName = &amp;quot;subscriptionName&amp;quot;, propertyValue = &amp;quot;DeletedFlights&amp;quot;)&lt;br /&gt;
})&lt;br /&gt;
public class DeletedFlights implements MessageListener {&lt;br /&gt;
	 &lt;br /&gt;
	 @PersistenceContext&lt;br /&gt;
	 private EntityManager em;&lt;br /&gt;
	 &lt;br /&gt;
	 /** Creates a new instance of DeletedFlights */&lt;br /&gt;
	 public DeletedFlights() {&lt;br /&gt;
	 }&lt;br /&gt;
	 &lt;br /&gt;
	 public void onMessage(Message message) {&lt;br /&gt;
		  System.out.println(&amp;quot;Jott torles uzenet: &amp;quot; + message);&lt;br /&gt;
		  if (message instanceof TextMessage) {&lt;br /&gt;
				try {&lt;br /&gt;
					 String id = ((TextMessage)message).getText();&lt;br /&gt;
					 &lt;br /&gt;
					 Query q = em.createNamedQuery(&amp;quot;Orders.findByFlightId&amp;quot;);&lt;br /&gt;
					 q.setParameter(&amp;quot;flightId&amp;quot;, id);&lt;br /&gt;
					 List&amp;lt;Orders&amp;gt; orders = q.getResultList();&lt;br /&gt;
						  &lt;br /&gt;
					 for (Orders o : orders) {&lt;br /&gt;
						  o.setStatus(-2);&lt;br /&gt;
						  em.persist(o);&lt;br /&gt;
						  System.out.println(&amp;quot;Order frissitve: &amp;quot; + o.getOrderId());&lt;br /&gt;
					 }&lt;br /&gt;
				} catch (Exception e) {&lt;br /&gt;
					 throw new RuntimeException(e);&lt;br /&gt;
				}&lt;br /&gt;
		  }&lt;br /&gt;
	 }&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Tesztelés: http://zoneX:8080/Vicc_air/&lt;br /&gt;
&lt;br /&gt;
Ha az appszerver logban nem jelenik meg a &amp;quot;Jott torles uzenet: ...&amp;quot; sor, valamit elcsesztél a konfigurálásnál.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div id=&amp;quot;ejbql&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
==Extra: összetett EJB-QL lekérdezések==&lt;br /&gt;
&lt;br /&gt;
Az EJB-QL 3.0 támogatja a vetítést, és az aggregált függvényeket, a módosítást és a törlést. A lekérdezés objektum tömbbel tér vissza. Íme egy példa a használatra:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;List l = em.createQuery(&amp;quot;Select o.flightId, count(o.orderId) from Orders o group by o.flightId&amp;quot;)&lt;br /&gt;
	 .getResultList();&lt;br /&gt;
for (Object o : l) {&lt;br /&gt;
	 Object[] oa = (Object[]) o;&lt;br /&gt;
	 System.out.print(&amp;quot;Len: &amp;quot; + oa.length + &amp;quot; -&amp;quot;);&lt;br /&gt;
	 for (Object f : oa)&lt;br /&gt;
		  System.out.print(&amp;quot; &amp;quot;+f);&lt;br /&gt;
	 System.out.println();&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[http://www.solarmetric.com/resources/ejbql-quickref.pdf EJB-QL 3.0 QuickRef]&lt;br /&gt;
&lt;br /&gt;
-- [[PallosPeter|Peti]] - 2006.11.22.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Valaszthato]]&lt;/div&gt;</summary>
		<author><name>Unknown user</name></author>
	</entry>
</feed>