Netbeans 6.9
Jave EE 6/7,,Glasfish 3.1
-------------ejb-----news Entity----------Entity class----------------------------------
package ejb;
import java.io.Serializable;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
/**
*
* @author MANISHA
*/
@Entity
public class NewsEntity implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private String title;
private String body;
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getBody() {
return body;
}
public void setBody(String body) {
this.body = body;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
@Override
public int hashCode() {
int hash = 0;
hash += (id != null ? id.hashCode() : 0);
return hash;
}
@Override
public boolean equals(Object object) {
// TODO: Warning - this method won't work in the case the id fields are not set
if (!(object instanceof NewsEntity)) {
return false;
}
NewsEntity other = (NewsEntity) object;
if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
return false;
}
return true;
}
@Override
public String toString() {
return "ejb.NewsEntity[ id=" + id + " ]";
}
}
-------------NewsMessageBean--------------------------------------------------------------------
package ejb;
import javax.annotation.Resource;
import javax.ejb.ActivationConfigProperty;
import javax.ejb.MessageDriven;
import javax.ejb.MessageDrivenContext;
import javax.jms.JMSDestinationDefinition;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.ObjectMessage;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
/**
*
* @author MANISHA
*/
@JMSDestinationDefinition(name = "jms/NewMessage", interfaceName = "javax.jms.Queue", resourceAdapter = "jmsra", destinationName = "NewMessage")
@MessageDriven(activationConfig = {
@ActivationConfigProperty(propertyName = "destinationLookup", propertyValue = "jms/NewMessage"),
@ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue")
})
public class NewMessage implements MessageListener {
@Resource
private MessageDrivenContext mdc;
@PersistenceContext(unitName = "ListContacts-ejbPU")
private EntityManager em;
public NewMessage() {
}
@Override
public void onMessage(Message message) {
ObjectMessage msg = null;
try {
if (message instanceof ObjectMessage) {
msg = (ObjectMessage) message;
NewsEntity e = (NewsEntity) msg.getObject();
save(e);
}
} catch (JMSException e) {
e.printStackTrace();
mdc.setRollbackOnly();
} catch (Throwable te) {
te.printStackTrace();
}
}
public void save(Object object) {
em.persist(object);
}
}
---------------------------------Session bean for entity class------------------------------------------
NewsFacade
-------------------------
package ejb;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
/**
*
* @author MANISHA
*/
@Stateless
public class NewsEntityFacade extends AbstractFacade<NewsEntity> {
@PersistenceContext(unitName = "ListContacts-ejbPU")
private EntityManager em;
@Override
protected EntityManager getEntityManager() {
return em;
}
public NewsEntityFacade() {
super(NewsEntity.class);
}
}
------------------------------------Abstract facade----------------------------------------------------
package ejb;
import java.util.List;
import javax.persistence.EntityManager;
/**
*
* @author MANISHA
*/
public abstract class AbstractFacade<T> {
private Class<T> entityClass;
public AbstractFacade(Class<T> entityClass) {
this.entityClass = entityClass;
}
protected abstract EntityManager getEntityManager();
public void create(T entity) {
getEntityManager().persist(entity);
}
public void edit(T entity) {
getEntityManager().merge(entity);
}
public void remove(T entity) {
getEntityManager().remove(getEntityManager().merge(entity));
}
public T find(Object id) {
return getEntityManager().find(entityClass, id);
}
public List<T> findAll() {
javax.persistence.criteria.CriteriaQuery cq = getEntityManager().getCriteriaBuilder().createQuery();
cq.select(cq.from(entityClass));
return getEntityManager().createQuery(cq).getResultList();
}
public List<T> findRange(int[] range) {
javax.persistence.criteria.CriteriaQuery cq = getEntityManager().getCriteriaBuilder().createQuery();
cq.select(cq.from(entityClass));
javax.persistence.Query q = getEntityManager().createQuery(cq);
q.setMaxResults(range[1] - range[0] + 1);
q.setFirstResult(range[0]);
return q.getResultList();
}
public int count() {
javax.persistence.criteria.CriteriaQuery cq = getEntityManager().getCriteriaBuilder().createQuery();
javax.persistence.criteria.Root<T> rt = cq.from(entityClass);
cq.select(getEntityManager().getCriteriaBuilder().count(rt));
javax.persistence.Query q = getEntityManager().createQuery(cq);
return ((Long) q.getSingleResult()).intValue();
}
}
------------------war-------------------------------------------------------------
pakage1
SessionmanageBean
package ejb;
import javax.ejb.LocalBean;
import javax.ejb.Singleton;
import javax.servlet.annotation.WebListener;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
/**
*
* @author MANISHA
*/
@Singleton
@LocalBean
@WebListener
public class SessionManagerBean implements HttpSessionListener {
private static int counter = 0;
@Override
public void sessionCreated(HttpSessionEvent se) {
counter++;
}
@Override
public void sessionDestroyed(HttpSessionEvent se) {
counter--;
}
public int getActiveSessionsCount() {
return counter;
}
}
------------------------ListNews Servlet----------
pakage 2
package web;
import ejb.NewsEntity;
import ejb.NewsEntityFacade;
import ejb.SessionManagerBean;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Iterator;
import java.util.List;
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;
/**
*
* @author MANISHA
*/
@WebServlet(name = "ListNews", urlPatterns = {"/ListNews"})
public class ListNews extends HttpServlet {
@EJB
private SessionManagerBean sessionManagerBean;
@EJB
private NewsEntityFacade newsEntityFacade;
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.getSession(true);
response.setContentType("text/html;charset=UTF-8");
try (PrintWriter out = response.getWriter()) {
out.println("<!DOCTYPE html>");
out.println("<html>");
out.println("<head>");
out.println("<title>Servlet ListNews</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>Servlet ListNews at " + request.getContextPath() + "</h1>");
List news = newsEntityFacade.findAll();
for (Iterator it = news.iterator(); it.hasNext();) {
NewsEntity elem = (NewsEntity) it.next();
out.println(" <b>" + elem.getTitle() + " </b><br />");
out.println(elem.getBody() + "<br /> ");
}
out.println("<a href='PostMessage'>Add new message</a>");
out.println("<br><br>");
out.println(sessionManagerBean.getActiveSessionsCount() + " user(s) reading the news.");
out.println("</body>");
out.println("</html>");
}
}
@WebServlet(name="PostMessage", urlPatterns={"/PostMessage"})
3. public class PostMessage extends HttpServlet {
4. @Resource(mappedName="jms/NewMessageFactory")
5. private ConnectionFactory connectionFactory;
6.
7. @Resource(mappedName="jms/NewMessage")
private Queue queue;
------------------------------------------
@WebServlet(name="PostMessage", urlPatterns={"/PostMessage"})
3. public class PostMessage extends HttpServlet {
4. @Resource(mappedName="jms/NewMessageFactory")
5. private ConnectionFactory connectionFactory;
6.
7. @Resource(mappedName="jms/NewMessage")
private Queue queue;
response.sendRedirect("ListNews");
31.
32. } catch (JMSException ex) {
33. ex.printStackTrace();
34. }
35. }
PrintWriter out = response.getWriter();
--------------------------------------------
Run the project
1. In the Projects window, right-click the NewsApp enterprise application node and select
Properties in the pop-up menu.
2. Select Run in the Categories pane.
3. In the Relative URL textfield, type /ListNews.
4. Click OK.
5. In the Projects window, right-click the NewsApp enterprise application node and choose Run.
No comments:
Post a Comment