From 620edb50491f9ad1452b3a54632fae51fd47e948 Mon Sep 17 00:00:00 2001 From: Giovanni Di Grezia Date: Sun, 31 May 2015 21:15:23 +0200 Subject: [PATCH] esercizio e test usando jms e mdb --- exercise1/InitializeDB.java | 4 +- exercise1_client/client.java | 2 +- exercise2/Book.java | 71 +++++++++++++++++++++++++ exercise2/BookMessage.java | 26 +++++++++ exercise2/EJBBook.java | 49 +++++++++++++++++ exercise2/InitializeDB.java | 43 +++++++++++++++ exercise2/MDBBook.java | 40 ++++++++++++++ exercise2/RemoteInterface.java | 18 +++++++ exercise2_client/ClientPrintAll.java | 44 +++++++++++++++ exercise2_client/ClientUpdatePrice.java | 37 +++++++++++++ servlet/Servletexercise2.java | 51 ++++++++++++++++++ servlet/Servlettest4.java | 58 ++++++++++++++++++++ test4_jms/GeneralMessage.java | 12 +++++ test4_jms/MDB.java | 30 +++++++++++ test4_jms_client/client.java | 35 ++++++++++++ 15 files changed, 517 insertions(+), 3 deletions(-) create mode 100644 exercise2/Book.java create mode 100644 exercise2/BookMessage.java create mode 100644 exercise2/EJBBook.java create mode 100644 exercise2/InitializeDB.java create mode 100644 exercise2/MDBBook.java create mode 100644 exercise2/RemoteInterface.java create mode 100644 exercise2_client/ClientPrintAll.java create mode 100644 exercise2_client/ClientUpdatePrice.java create mode 100644 servlet/Servletexercise2.java create mode 100644 servlet/Servlettest4.java create mode 100644 test4_jms/GeneralMessage.java create mode 100644 test4_jms/MDB.java create mode 100644 test4_jms_client/client.java diff --git a/exercise1/InitializeDB.java b/exercise1/InitializeDB.java index 9a04e42..380e2b5 100644 --- a/exercise1/InitializeDB.java +++ b/exercise1/InitializeDB.java @@ -9,8 +9,8 @@ import javax.inject.Inject; * Created by Giovanni on 24/05/2015. */ -@Singleton -@Startup +//@Singleton enable +//@Startup enable public class InitializeDB { private Student s1,s2; diff --git a/exercise1_client/client.java b/exercise1_client/client.java index 4412c04..5f6aeca 100644 --- a/exercise1_client/client.java +++ b/exercise1_client/client.java @@ -40,4 +40,4 @@ public class client { } -} +} \ No newline at end of file diff --git a/exercise2/Book.java b/exercise2/Book.java new file mode 100644 index 0000000..120df13 --- /dev/null +++ b/exercise2/Book.java @@ -0,0 +1,71 @@ +package exercise2; + +import javax.persistence.*; +import javax.validation.constraints.DecimalMin; +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + * Created by Giovanni on 31/05/2015. + */ + +@Entity +@NamedQueries({ + @NamedQuery(name = "findbyisbn", query = "SELECT b FROM Book b WHERE b.isbn =?1"), + @NamedQuery(name = "findall", query = "SELECT b FROM Book b") +}) +public class Book implements Serializable{ + + @GeneratedValue @Id + private Long id ; + @NotNull + private String title; + @NotNull + private String author; + @NotNull + private Float price; + @NotNull + private String isbn; + + + public Book(){} + + public Book(@NotNull String in_isbn,@NotNull String in_title,@NotNull String in_author, @NotNull @DecimalMin("0.0") Float in_price){ + title = in_title; + author = in_author; + price = in_price; + isbn = in_isbn; + } + + public @NotNull String getIsbn() { + return isbn; + } + + public void setIsbn(@NotNull String isbn) { + this.isbn = isbn; + } + + public @NotNull String getTitle() { + return title; + } + + public void setTitle(@NotNull String title) { + this.title = title; + } + + public @NotNull String getAuthor() { + return author; + } + + public void setAuthor( @NotNull String author) { + this.author = author; + } + + public @NotNull @DecimalMin("0.0") Float getPrice() { + return price; + } + + public void setPrice(@NotNull @DecimalMin("0.0") Float price) { + this.price = price; + } +} diff --git a/exercise2/BookMessage.java b/exercise2/BookMessage.java new file mode 100644 index 0000000..53f1c8f --- /dev/null +++ b/exercise2/BookMessage.java @@ -0,0 +1,26 @@ +package exercise2; + +import java.io.Serializable; + +/** + * Created by Giovanni on 31/05/2015. + */ +public class BookMessage implements Serializable{ + + public BookMessage (String in_isbn, Float in_price){ + isbn = in_isbn; + price = in_price; + } + + + private String isbn; + private Float price; + + public String getIsbn() { + return isbn; + } + + public Float getPrice() { + return price; + } +} diff --git a/exercise2/EJBBook.java b/exercise2/EJBBook.java new file mode 100644 index 0000000..a559ee7 --- /dev/null +++ b/exercise2/EJBBook.java @@ -0,0 +1,49 @@ +package exercise2; + + + +import javax.ejb.LocalBean; +import javax.ejb.Stateless; +import javax.persistence.EntityManager; +import javax.persistence.PersistenceContext; +import javax.persistence.Query; +import javax.validation.constraints.NotNull; +import java.util.List; + +/** + * Created by Giovanni on 24/05/2015. + */ +@Stateless +@LocalBean +public class EJBBook implements RemoteInterface { + + @PersistenceContext(unitName = "exercise2") + EntityManager em ; + + + public void create_book (@NotNull Book s) { + em.persist(s); + } + public void update_book (@NotNull Book s) { + em.merge(s); + em.persist(s); + } + public void delete_book (@NotNull Book s) { + em.merge(s); + em.remove(s); + } + + public @NotNull List findbyisbn (@NotNull String in_isbn) { + Query Q = em.createNamedQuery("findbyisbn"); + Q.setParameter(1, in_isbn); + return (List)Q.getResultList(); + } + + + public List findall () { + Query Q = em.createNamedQuery("findall"); + return (List)Q.getResultList(); + } + + +} diff --git a/exercise2/InitializeDB.java b/exercise2/InitializeDB.java new file mode 100644 index 0000000..78120c7 --- /dev/null +++ b/exercise2/InitializeDB.java @@ -0,0 +1,43 @@ +package exercise2; + + + +import javax.annotation.PostConstruct; +import javax.annotation.PreDestroy; +import javax.ejb.Singleton; +import javax.ejb.Startup; +import javax.inject.Inject; + +/** + * Created by Giovanni on 24/05/2015. + */ + +@Singleton +@Startup +public class InitializeDB { + + private Book b1,b2; + + @Inject + private EJBBook e; + + @PostConstruct + void pupulate (){ + b1 = new Book("0001","Titolo1","Author1",10f); + b2 = new Book("0010","Titolo2","Author2",30f); + e.create_book(b1); + e.create_book(b2); + } + + @PreDestroy + void delete () { + e.delete_book(b1); + e.delete_book(b2); + } + + + + + + +} diff --git a/exercise2/MDBBook.java b/exercise2/MDBBook.java new file mode 100644 index 0000000..13cc640 --- /dev/null +++ b/exercise2/MDBBook.java @@ -0,0 +1,40 @@ +package exercise2; + +import javax.ejb.MessageDriven; +import javax.inject.Inject; +import javax.jms.JMSException; +import javax.jms.Message; +import javax.jms.MessageListener; +import java.util.Iterator; +import java.util.List; +import java.util.logging.Logger; + +/** + * Created by Giovanni on 31/05/2015. + */ +@MessageDriven(mappedName = "jms/javaee7/Topic") +public class MDBBook implements MessageListener { + + @Inject + Logger l; + + @Inject + EJBBook e; + + public void onMessage(Message message) { + try { + BookMessage m = message.getBody(BookMessage.class); + l.info("Messaggio: " + m.getIsbn() + " " + m.getPrice()); + + List lb = e.findbyisbn(m.getIsbn()); + Iteratorib = lb.iterator(); + if (ib.hasNext()){ + Book b = ib.next(); + b.setPrice(m.getPrice()); + e.update_book(b); + } + } catch (JMSException e) { + e.printStackTrace(); + } + } +} diff --git a/exercise2/RemoteInterface.java b/exercise2/RemoteInterface.java new file mode 100644 index 0000000..075ff80 --- /dev/null +++ b/exercise2/RemoteInterface.java @@ -0,0 +1,18 @@ +package exercise2; + +import exercise1.Student; + +import javax.ejb.Remote; +import javax.validation.constraints.NotNull; +import java.util.List; + +/** + * Created by Giovanni on 24/05/2015. + */ +@Remote +public interface RemoteInterface { + + @NotNull List findbyisbn(@NotNull String in_isbn); + List findall() ; + +} diff --git a/exercise2_client/ClientPrintAll.java b/exercise2_client/ClientPrintAll.java new file mode 100644 index 0000000..f26969f --- /dev/null +++ b/exercise2_client/ClientPrintAll.java @@ -0,0 +1,44 @@ +package exercise2_client; + +import exercise2.Book; +import exercise2.RemoteInterface; + +import javax.naming.Context; +import javax.naming.InitialContext; +import javax.naming.NamingException; +import java.util.Iterator; +import java.util.List; + +public class ClientPrintAll { + + + public static void main (String[] args) { + + + Context ctx = null; + try { + ctx =new InitialContext(); + } catch (NamingException e) { + e.printStackTrace(); + } + + RemoteInterface r = null; + try { + r =(RemoteInterface) ctx.lookup("java:global/web/EJBBook!exercise2.RemoteInterface"); + List l = r.findall(); + Iterator it = l.iterator(); + while (it.hasNext()){ + Book b = it.next(); + System.out.print(b.getIsbn() + " " + b.getTitle() + " " + b.getAuthor() + " " +b.getPrice() + " "); + } + + } catch (NamingException e) { + e.printStackTrace(); + } + + + + } + + +} diff --git a/exercise2_client/ClientUpdatePrice.java b/exercise2_client/ClientUpdatePrice.java new file mode 100644 index 0000000..76c00d8 --- /dev/null +++ b/exercise2_client/ClientUpdatePrice.java @@ -0,0 +1,37 @@ +package exercise2_client; + +import exercise2.BookMessage; + +import javax.jms.ConnectionFactory; +import javax.jms.Destination; +import javax.jms.JMSContext; +import javax.naming.Context; +import javax.naming.InitialContext; +import javax.naming.NamingException; + +/** + * Created by Giovanni on 31/05/2015. + */ +public class ClientUpdatePrice { + + public static void main(String[] args) throws NamingException { + + + BookMessage m = new BookMessage("0001",Float.valueOf(10000)); + + Context jndiContext = new InitialContext(); + + ConnectionFactory connectionFactory = (ConnectionFactory) jndiContext.lookup("jms/javaee7/ConnectionFactory"); + Destination topic = (Destination) jndiContext.lookup("jms/javaee7/Topic"); + try (JMSContext jmsContext = connectionFactory.createContext()) { + jmsContext.createProducer().send(topic, m); + } + } + + + + + + + +} diff --git a/servlet/Servletexercise2.java b/servlet/Servletexercise2.java new file mode 100644 index 0000000..a9ea89a --- /dev/null +++ b/servlet/Servletexercise2.java @@ -0,0 +1,51 @@ +package servlet; + +import javax.servlet.ServletException; +import javax.servlet.annotation.WebServlet; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.io.PrintWriter; + +/** + * Created by Giovanni on 25/04/2015. + */ + +@WebServlet(name = "Servletexercise2") +public class Servletexercise2 extends HttpServlet { + + + protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + response.setContentType("text/html;charset=UTF-8"); + try (PrintWriter out = response.getWriter()) { +/* TODO output your page here. */ + + out.println(""); + out.println(""); + out.println(""); + out.println("Servlet xg"); + out.println(""); + out.println(""); + out.println("

Servlet xg at " + request.getContextPath() + "

"); + + + + + out.println(""); + out.println(""); + } + } + + + + protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + processRequest(request, response); + + } + + protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + processRequest(request, response); + + } +} diff --git a/servlet/Servlettest4.java b/servlet/Servlettest4.java new file mode 100644 index 0000000..12350e6 --- /dev/null +++ b/servlet/Servlettest4.java @@ -0,0 +1,58 @@ +package servlet; + +import test3_persistence.store_class; +import test3_persistence.test_class; + +import javax.ejb.EJB; +import javax.servlet.ServletException; +import javax.servlet.annotation.WebServlet; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.io.PrintWriter; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; + +/** + * Created by Giovanni on 25/04/2015. + */ + +@WebServlet(name = "Servlettest4") +public class Servlettest4 extends HttpServlet { + + + protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + response.setContentType("text/html;charset=UTF-8"); + try (PrintWriter out = response.getWriter()) { +/* TODO output your page here. */ + + out.println(""); + out.println(""); + out.println(""); + out.println("Servlet xg"); + out.println(""); + out.println(""); + out.println("

Servlet xg at " + request.getContextPath() + "

"); + + + + + out.println(""); + out.println(""); + } + } + + + + protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + processRequest(request, response); + + } + + protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + processRequest(request, response); + + } +} diff --git a/test4_jms/GeneralMessage.java b/test4_jms/GeneralMessage.java new file mode 100644 index 0000000..57819f9 --- /dev/null +++ b/test4_jms/GeneralMessage.java @@ -0,0 +1,12 @@ +package test4_jms; + +import java.io.Serializable; + +/** + * Created by Giovanni on 31/05/2015. + */ +public class GeneralMessage implements Serializable { + + public String s; + +} diff --git a/test4_jms/MDB.java b/test4_jms/MDB.java new file mode 100644 index 0000000..1525124 --- /dev/null +++ b/test4_jms/MDB.java @@ -0,0 +1,30 @@ +package test4_jms; + +import javax.ejb.ActivationConfigProperty; +import javax.ejb.MessageDriven; +import javax.inject.Inject; +import javax.jms.JMSException; +import javax.jms.Message; +import javax.jms.MessageListener; +import java.util.logging.Logger; + +/** + * Created by Giovanni on 31/05/2015. + */ +@MessageDriven(mappedName = "jms/javaee7/Topic", activationConfig = { + @ActivationConfigProperty(propertyName = "messageSelector", propertyValue = "author = 0") + }) +public class MDB implements MessageListener { + + @Inject + Logger l; + + public void onMessage(Message message) { + try { + GeneralMessage m = message.getBody(GeneralMessage.class); + l.info("Messaggio: " + m.s); + } catch (JMSException e) { + e.printStackTrace(); + } + } +} diff --git a/test4_jms_client/client.java b/test4_jms_client/client.java new file mode 100644 index 0000000..dd7cdd1 --- /dev/null +++ b/test4_jms_client/client.java @@ -0,0 +1,35 @@ +package test4_jms_client; + +import test4_jms.GeneralMessage; + +import javax.jms.ConnectionFactory; +import javax.jms.Destination; +import javax.jms.JMSContext; +import javax.naming.Context; +import javax.naming.InitialContext; +import javax.naming.NamingException; + +/** + * Created by Giovanni on 31/05/2015. + */ +public class client { + + public static void main(String[] args) throws NamingException { + + + GeneralMessage gm = new GeneralMessage(); + gm.s = "messaggio del caiser 2"; + + Context jndiContext = new InitialContext(); + + ConnectionFactory connectionFactory = (ConnectionFactory) jndiContext.lookup("jms/javaee7/ConnectionFactory"); + Destination topic = (Destination) jndiContext.lookup("jms/javaee7/Topic"); + try (JMSContext jmsContext = connectionFactory.createContext()) { + jmsContext.createProducer().setProperty("author", 0).send(topic,gm); + } + } + + + + +}