Monday, October 13, 2014

List news full code
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>");
        }
    }
-----------------------Post messfe servlet------------------------------------------------------
@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.

















Mongo DB CRUD full code

1.DBManager.java

package mongodbapp;

import com.mongodb.DB;
import com.mongodb.MongoClient;
import java.net.UnknownHostException;

/**
 *
 * @author Hasangi
 */
public class DBManager {
    private static DB database;

public static DB getDatabase() {
if(database == null) {
MongoClient mongo;
try {
mongo = new MongoClient("localhost", 27017);
database = mongo.getDB("usermanager");
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return database;
}

   
}

---------------------------User.java class------------------------
package mongodbapp;

/**
 *
 * @author Hasangi
 */
public class User {
        private int id;
private String firstName;
private String lastName;
private String email;

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getFirstName() {
        return firstName;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getLastName() {
        return lastName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }

}
------------------Main------------Jframe-----------------------------------------------------------
package mongodbapp;

/**
 *
 * @author Hasangi
 */
public class Main extends javax.swing.JFrame {

    /**
     * Creates new form Main
     */
    public Main() {
        initComponents();
    }

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
    private void initComponents() {

        jLabel1 = new javax.swing.JLabel();
        jButton1 = new javax.swing.JButton();
        jButton2 = new javax.swing.JButton();
        jButton3 = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        jLabel1.setFont(new java.awt.Font("Tempus Sans ITC", 3, 36)); // NOI18N
        jLabel1.setText("Manage User");

        jButton1.setText("Add New User");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });

        jButton2.setText("View Users");
        jButton2.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton2ActionPerformed(evt);
            }
        });

        jButton3.setText("Manage User");
        jButton3.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton3ActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                        .addGroup(layout.createSequentialGroup()
                            .addGap(86, 86, 86)
                            .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 241, javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addGroup(layout.createSequentialGroup()
                            .addGap(52, 52, 52)
                            .addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 287, javax.swing.GroupLayout.PREFERRED_SIZE)))
                    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                        .addComponent(jButton3, javax.swing.GroupLayout.PREFERRED_SIZE, 287, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addComponent(jButton2, javax.swing.GroupLayout.PREFERRED_SIZE, 287, javax.swing.GroupLayout.PREFERRED_SIZE)))
                .addContainerGap(61, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(40, 40, 40)
                .addComponent(jLabel1)
                .addGap(18, 18, 18)
                .addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 37, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(jButton2, javax.swing.GroupLayout.PREFERRED_SIZE, 35, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(18, 18, 18)
                .addComponent(jButton3, javax.swing.GroupLayout.PREFERRED_SIZE, 36, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(57, Short.MAX_VALUE))
        );

        pack();
    }// </editor-fold>                        

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        // TODO add your handling code here:
        AddUser add=new AddUser();
        add.setVisible(true);
        
    }                                        

    private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        // TODO add your handling code here:
        viewUser view= new viewUser();
        view.setVisible(true);
    }                                        

    private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        // TODO add your handling code here:
        ManageUser mange= new ManageUser();
        mange.setVisible(true);
    }                                        
----------------------Add User--Jframe---------------------------------------------------------

package mongodbapp;

import com.mongodb.*;
import javax.swing.JFrame;
import javax.swing.JOptionPane;

/**
 *
 * @author Hasangi
 */
public class AddUser extends javax.swing.JFrame {

    /**
     * Creates new form AddUser
     */
    public AddUser() {
        initComponents();
    }

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                        
    private void initComponents() {

        jLabel1 = new javax.swing.JLabel();
        jLabel2 = new javax.swing.JLabel();
        jLabel3 = new javax.swing.JLabel();
        jLabel4 = new javax.swing.JLabel();
        jLabel5 = new javax.swing.JLabel();
        txtId = new javax.swing.JTextField();
        txtFirstName = new javax.swing.JTextField();
        txtLastName = new javax.swing.JTextField();
        txtEmail = new javax.swing.JTextField();
        jButton1 = new javax.swing.JButton();
        jButton2 = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        jLabel1.setFont(new java.awt.Font("Tempus Sans ITC", 3, 36)); // NOI18N
        jLabel1.setText("Add New User");

        jLabel2.setText("ID");

        jLabel3.setText("First Name");

        jLabel4.setText("Last Name");

        jLabel5.setText("E mail");

        jButton1.setText("Add User");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });

        jButton2.setText("Exit");
        jButton2.setToolTipText("");
        jButton2.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton2ActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addGap(22, 22, 22)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(jLabel2)
                            .addComponent(jLabel3)
                            .addComponent(jLabel4)
                            .addComponent(jLabel5))
                        .addGap(39, 39, 39)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                                .addComponent(txtFirstName)
                                .addComponent(txtLastName)
                                .addComponent(txtEmail, javax.swing.GroupLayout.DEFAULT_SIZE, 237, Short.MAX_VALUE))
                            .addComponent(txtId, javax.swing.GroupLayout.PREFERRED_SIZE, 237, javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addGap(0, 108, Short.MAX_VALUE))
                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                        .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 294, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addGroup(layout.createSequentialGroup()
                                .addGap(85, 85, 85)
                                .addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 117, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(jButton2, javax.swing.GroupLayout.PREFERRED_SIZE, 88, javax.swing.GroupLayout.PREFERRED_SIZE)))))
                .addContainerGap())
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addComponent(jLabel1)
                .addGap(23, 23, 23)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel2)
                    .addComponent(txtId, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(22, 22, 22)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel3)
                    .addComponent(txtFirstName, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(24, 24, 24)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel4)
                    .addComponent(txtLastName, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(22, 22, 22)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel5)
                    .addComponent(txtEmail, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(23, 23, 23)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jButton1, javax.swing.GroupLayout.PREFERRED_SIZE, 34, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(jButton2, javax.swing.GroupLayout.PREFERRED_SIZE, 34, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(0, 24, Short.MAX_VALUE))
        );

        pack();
    }// </editor-fold>                      

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                        
        // TODO add your handling code here:
        User newUser = new User();
        newUser.setId(Integer.parseInt(txtId.getText()));
        newUser.setFirstName(txtFirstName.getText());
        newUser.setLastName(txtLastName.getText());
        newUser.setEmail(txtEmail.getText());

        DBObject doc = createDBObject(newUser);
        DB userDB = DBManager.getDatabase();
        DBCollection col = userDB.getCollection("user");
        WriteResult result = col.insert(doc);
       
        JOptionPane.showMessageDialog(rootPane, "User Insert SucessFully...!");
        txtId.setText("");      
        txtFirstName.setText("");
        txtLastName.setText("");
        txtEmail.setText("");
           
           

    }                                      

    private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                        
        // TODO add your handling code here:
       
        this.setVisible(false);
        this.dispose();
    }                                      

    private static DBObject createDBObject(User user) {
       BasicDBObjectBuilder docBuilder = BasicDBObjectBuilder.start();                                
       docBuilder.append("_id", user.getId());
       docBuilder.append("firstName", user.getFirstName());
       docBuilder.append("lastName", user.getLastName());
       docBuilder.append("email", user.getEmail());
       return docBuilder.get();
    }

-----------------------------View user---------------jframe------------------------
package mongodbapp;

import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.DBCursor;
import com.mongodb.DBObject;
import com.mongodb.util.JSON;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;

/**
 *
 * @author Hasangi
 */
public class viewUser extends javax.swing.JFrame {

    /**
     * Creates new form viewUser
     */
    public viewUser() {
        initComponents();
        printmongData();
    }
    public void printmongData()
    {
   
        DefaultTableModel model = new DefaultTableModel();

        model.addColumn("ID");
        model.addColumn("First Name");
        model.addColumn("Last Name");
        model.addColumn("Email");

   
   
        DB userDB = DBManager.getDatabase();
        DBCollection col = userDB.getCollection("user");
       
         DBCursor cursor = col.find();
       
         while (cursor.hasNext()) {
             DBObject user=(DBObject) cursor.next();          
            model.addRow(new Object[] {user.get("_id"),user.get("firstName"),user.get("lastName"),user.get("email")});
         
         }
         jTable3.setModel(model);
    }
-----------------------------------------------Update/deleteuser---------jframe------------------
package mongodbapp;

import com.mongodb.*;
import javax.swing.JOptionPane;
import javax.swing.SwingUtilities;
import javax.swing.table.DefaultTableModel;

/**
 *
 * @author Hasangi
 */
public class ManageUser extends javax.swing.JFrame {

    /**
     * Creates new form ManageUser
     */
    public ManageUser() {
        initComponents();
        fillID();

    }

    public void fillID() {
        DB userDB = DBManager.getDatabase();
        DBCollection col = userDB.getCollection("user");

        DBCursor cursor = col.find();

        while (cursor.hasNext()) {
            DBObject user = (DBObject) cursor.next();
            jComboBox1.addItem(user.get("_id"));
        }
    }
----------------------------Add MongoDb.jar----------------------------------------------------------
run










Mongo Full code Lab

Java Appliacation
----------------java class----------------

DBManager.java

package userdetails;

import com.mongodb.DB;
import com.mongodb.MongoClient;
import java.net.UnknownHostException;

/**
 *
 * @author MANISHA
 */
public class DBManager {
    private static DB database;

public static DB getDatabase() {
if(database == null) {
MongoClient mongo;
try {
mongo = new MongoClient("localhost", 27017);
database = mongo.getDB("usermanagerDB");
                               
                               
                               
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return database;
}

}
-------------------------------User.java class--------------------------------------------------------------------------
package userdetails;

/**
 *
 * @author MANISHA
 */
public class User {
        private int id;
private String firstName;
private String lastName;
private String email;

public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}


}

-----------------------Jafrme(name as Main)It run as main class------------------------------------------------
package userdetails;

import com.mongodb.BasicDBObjectBuilder;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.DBObject;
import com.mongodb.WriteResult;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

/**
 *
 * @author MANISHA
 */
public class Main extends javax.swing.JFrame {

    /**
     * Creates new form mainForm
     */
    public Main() {
        initComponents();
    }

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                        
    private void initComponents() {

        jTabbedPane1 = new javax.swing.JTabbedPane();
        jPanel1 = new javax.swing.JPanel();
        jLabel1 = new javax.swing.JLabel();
        jLabel2 = new javax.swing.JLabel();
        jLabel3 = new javax.swing.JLabel();
        jLabel4 = new javax.swing.JLabel();
        txtId = new javax.swing.JTextField();
        txtFirstName = new javax.swing.JTextField();
        txtLastName = new javax.swing.JTextField();
        txtEmail = new javax.swing.JTextField();
        jButton1 = new javax.swing.JButton();
        jButton2 = new javax.swing.JButton();
        jButton3 = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

        jPanel1.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());

        jLabel1.setText("ID");
        jPanel1.add(jLabel1, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 30, -1, -1));

        jLabel2.setText("First Name");
        jPanel1.add(jLabel2, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 80, -1, -1));

        jLabel3.setText("Last Name");
        jPanel1.add(jLabel3, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 120, -1, -1));

        jLabel4.setText("Email");
        jPanel1.add(jLabel4, new org.netbeans.lib.awtextra.AbsoluteConstraints(10, 170, -1, -1));
        jPanel1.add(txtId, new org.netbeans.lib.awtextra.AbsoluteConstraints(120, 30, 150, -1));
        jPanel1.add(txtFirstName, new org.netbeans.lib.awtextra.AbsoluteConstraints(120, 80, 150, -1));
        jPanel1.add(txtLastName, new org.netbeans.lib.awtextra.AbsoluteConstraints(120, 120, 150, -1));
        jPanel1.add(txtEmail, new org.netbeans.lib.awtextra.AbsoluteConstraints(120, 160, 150, -1));

        jButton1.setText("Add User");
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });
        jPanel1.add(jButton1, new org.netbeans.lib.awtextra.AbsoluteConstraints(20, 240, -1, -1));

        jButton2.setText("Update");
        jPanel1.add(jButton2, new org.netbeans.lib.awtextra.AbsoluteConstraints(120, 240, -1, -1));

        jButton3.setText("Delete");
        jPanel1.add(jButton3, new org.netbeans.lib.awtextra.AbsoluteConstraints(210, 240, -1, -1));

        jTabbedPane1.addTab("Add User", jPanel1);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jTabbedPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 400, Short.MAX_VALUE)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jTabbedPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 302, Short.MAX_VALUE)
        );

        pack();
    }// </editor-fold>                      

    private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                        
        jButton1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
User newUser = new User();
newUser.setId(Integer.parseInt(txtId.getText()));
newUser.setFirstName(txtFirstName.getText());
newUser.setLastName(txtLastName.getText());
newUser.setEmail(txtEmail.getText());

                           
DBObject doc = createDBObject(newUser);
DB userDB = DBManager.getDatabase();
DBCollection col = userDB.getCollection("user");
WriteResult result = col.insert(doc);
}
});
       
       
       

    }                                      

    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        /* Set the Nimbus look and feel */
        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
        /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
         * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
         */
        try {
            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                if ("Nimbus".equals(info.getName())) {
                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (ClassNotFoundException ex) {
            java.util.logging.Logger.getLogger(Main.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(Main.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(Main.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(Main.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }
        //</editor-fold>

        /* Create and display the form */
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new Main().setVisible(true);
            }
        });
    }
private static DBObject createDBObject(User user) {
       BasicDBObjectBuilder docBuilder = BasicDBObjectBuilder.start();
                               
       docBuilder.append("_id", user.getId());
       docBuilder.append("firstName", user.getFirstName());
       docBuilder.append("lastName", user.getLastName());
       docBuilder.append("email", user.getEmail());
       return docBuilder.get();
   }

    // Variables declaration - do not modify                    
    private javax.swing.JButton jButton1;
    private javax.swing.JButton jButton2;
    private javax.swing.JButton jButton3;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JTabbedPane jTabbedPane1;
    private javax.swing.JTextField txtEmail;
    private javax.swing.JTextField txtFirstName;
    private javax.swing.JTextField txtId;
    private javax.swing.JTextField txtLastName;
    // End of variables declaration                  
}




EJB full code

EJB Module-gh package

Entity classes

BookEntity.java
-------------------

package ejb;

import java.io.Serializable;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

/**
 *
 * @author Chamila Madushanka
 */
@Entity
public class BookEntity implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;
    private String title;
    private int ISBN;
    private String author;
    private int b_year;
    private String language;
    private double price;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public int getISBN() {
        return ISBN;
    }

    public void setISBN(int ISBN) {
        this.ISBN = ISBN;
    }

    public String getAuthor() {
        return author;
    }

    public void setAuthor(String author) {
        this.author = author;
    }

    public int getB_year() {
        return b_year;
    }

    public void setB_year(int b_year) {
        this.b_year = b_year;
    }

    public String getLanguage() {
        return language;
    }

    public void setLanguage(String language) {
        this.language = language;
    }

    public double getPrice() {
        return price;
    }

    public void setPrice(double price) {
        this.price = price;
    }




    

    @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 BookEntity)) {
            return false;
        }
        BookEntity other = (BookEntity) 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.BookEntity[ id=" + id + " ]";
    }
    
}

-----------------------------------------------------------------------------------------------------------------------
AutherEntity.java
-----------------------------

package ejb;

import java.io.Serializable;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

/**
 *
 * @author Chamila Madushanka
 */
@Entity
public class AuthorEntity implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;
    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }



    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 AuthorEntity)) {
            return false;
        }
        AuthorEntity other = (AuthorEntity) 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.AuthorEntity[ id=" + id + " ]";
    }
    
}
---------------------------------------------------------------------------------------
Message Driven Beans

New Book.java

package ejb;

import javax.annotation.Resource;
import javax.ejb.ActivationConfigProperty;
import javax.ejb.MessageDriven;
import javax.ejb.MessageDrivenContext;
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 Chamila Madushanka
 */
@MessageDriven(mappedName = "jms/NewBook", activationConfig = {
    @ActivationConfigProperty(propertyName = "acknowledgeMode", propertyValue = "Auto-acknowledge"),
    @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue")
})
public class NewBook implements MessageListener {
    
    @Resource
    private MessageDrivenContext mdc;
    @PersistenceContext(unitName = "EnterpriseApplication1-ejbPU")
    private EntityManager em;
    
    
    public NewBook() {
    }
    
    @Override
    public void onMessage(Message message) {
        ObjectMessage msg = null; 
        try { 
        if (message instanceof ObjectMessage) { 
        msg = (ObjectMessage) message; 
        NewBook e = (NewBook) msg.getObject(); 
        save(e); 
        } 
        } 
        catch (JMSException e) { 
        e.printStackTrace(); 
        mdc.setRollbackOnly(); 
        } 
        catch (Throwable te) { 
        te.printStackTrace(); 
        }
    }

    public void save(Object object) {
        em.persist(object);
    }

    public void persist(Object object) {
        em.persist(object);
    }
}

-----------------------------------------------------------------------------------------------------------------

NewAuther.java

package ejb;

import javax.annotation.Resource;
import javax.ejb.ActivationConfigProperty;
import javax.ejb.MessageDriven;
import javax.ejb.MessageDrivenContext;
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 Chamila Madushanka
 */
@MessageDriven(mappedName = "jms/NewAuthor", activationConfig = {
    @ActivationConfigProperty(propertyName = "acknowledgeMode", propertyValue = "Auto-acknowledge"),
    @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue")
})
public class NewAuthor implements MessageListener {

    
    @PersistenceContext(unitName = "EnterpriseApplication1-ejbPU")
    private EntityManager em;
    @Resource
    private MessageDrivenContext mdc;

    public NewAuthor() {
    }

    @Override
    public void onMessage(Message message) {
         
    ObjectMessage msg = null; 
    try { 
        if (message instanceof ObjectMessage) { 
            msg = (ObjectMessage) message; 
            AuthorEntity e = (AuthorEntity) msg.getObject(); 
            save(e);             
        } 
    } catch (JMSException e) { 
        e.printStackTrace(); 
        mdc.setRollbackOnly(); 
    } catch (Throwable te) { 
        te.printStackTrace(); 
    } 
    }

    public void save(Object object) {
        em.persist(object);
    }

    public void persist(Object object) {
        em.persist(object);
    }
}


-------------------------------------------------------------------------------------------------------------
Persistence category, select Session Beans for Entity Classes

Select  both classes.
It will create Auther Facade/BookFacde/AbstractFacade
------------------------------------------------------------------------------------------------------------
AbstractFacade


package ejb;

import java.util.List;
import javax.persistence.EntityManager;

/**
 *
 * @author Chamila Madushanka
 */
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]);
        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();
    }
    
}

-----------------------------------------------------------------------------------------------------------
AutherFacade
-----------------
package ejb;

import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

/**
 *
 * @author Chamila Madushanka
 */
@Stateless
public class AuthorEntityFacade extends AbstractFacade<AuthorEntity> {
    @PersistenceContext(unitName = "EnterpriseApplication1-ejbPU")
    private EntityManager em;

    @Override
    protected EntityManager getEntityManager() {
        return em;
    }

    public AuthorEntityFacade() {
        super(AuthorEntity.class);
    }
    
}

BookEntityFacade
----------------------
package ejb;

import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

/**
 *
 * @author Chamila Madushanka
 */
@Stateless
public class BookEntityFacade extends AbstractFacade<BookEntity> {
    @PersistenceContext(unitName = "EnterpriseApplication1-ejbPU")
    private EntityManager em;

    @Override
    protected EntityManager getEntityManager() {
        return em;
    }

    public BookEntityFacade() {
        super(BookEntity.class);
    }
    
}

---------------------------------------------------------------------------------------------------------------------

In War 

Project->propeties->Run->/Main(HomeServletName)
---------------------------------------------------------------------------------------------------------------------
Pakage nn
1.Session Bean

package ejb;

import javax.ejb.Singleton;
import javax.ejb.LocalBean;
import javax.servlet.annotation.WebListener;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;

/**
 *
 * @author Chamila Madushanka
 */
@Singleton
@LocalBean
@WebListener
public class NewSessionBean implements HttpSessionListener{

    int i = 0;
    
    @Override
    public void sessionCreated(HttpSessionEvent se) {
        i++;
    }

    @Override
    public void sessionDestroyed(HttpSessionEvent se) {
        i--;
    }

    public int getClients()
    {
        return i;
    }
    // Add business logic below. (Right-click in editor and choose
    // "Insert Code > Add Business Method")

}
-----------------Add Servelets-----------------------------------------------------------------------------------
Package name web

Main
-------
package web;

import java.io.IOException;
import java.io.PrintWriter;
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 Chamila Madushanka
 */
@WebServlet(name = "Main", urlPatterns = {"/Main"})
public class Main extends HttpServlet {

    /**
     * Processes requests for both HTTP
     * <code>GET</code> and
     * <code>POST</code> methods.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {
            /* TODO output your page here. You may use following sample code. */
            out.println("<!DOCTYPE html>");
            out.println("<html>");
            out.println("<head>");
            out.println("<title>Online BookStore</title>");            
            out.println("</head>");
            out.println("<body>");
            out.println("<h1>Online BookStore</h1>");
            out.println("<a href='ListBooks'>Book Details</a>");
            out.println("<br/>");
            out.println("<a href='ListAuthor'>Author Details</a>");
            out.println("</body>");
            out.println("</html>");
        } finally {            
            out.close();
        }
    }
---------------------NewAuther------------------------------------------------------------------------

package web;

import ejb.AuthorEntity;
import java.io.IOException;
import java.io.PrintWriter;
import javax.annotation.Resource;
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.JMSException;
import javax.jms.MessageProducer;
import javax.jms.ObjectMessage;
import javax.jms.Queue;
import javax.jms.Session;
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 Chamila Madushanka
 */
@WebServlet(name = "NewAuthor", urlPatterns = {"/NewAuthor"})
public class NewAuthor extends HttpServlet {
//    @EJB
//    private NewSessionBean newSessionBean;
//    @EJB
//    private AuthorEntityFacade authorEntityFacade;

    @Resource(mappedName = "jms/NewAuthorFactory")
    private ConnectionFactory connectionFactory;
    @Resource(mappedName = "jms/NewAuthor")
    private Queue queue;
    AuthorEntity e = new AuthorEntity();

    /**
     * Processes requests for both HTTP
     * <code>GET</code> and
     * <code>POST</code> methods.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {




        response.setContentType("text/html;charset=UTF-8");


        String title = request.getParameter("title");
        if ((title != null)) {
            try {
                Connection connection = connectionFactory.createConnection();
                Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
                MessageProducer messageProducer = session.createProducer(queue);
                ObjectMessage message = session.createObjectMessage();
                // here we create NewsEntity, that will be sent in JMS message 

                e.setName(title);
                message.setObject(e);
                messageProducer.send(message);
                messageProducer.close();
                connection.close();

                //  response.sendRedirect("ListNews");
            } catch (JMSException ex) {
                ex.printStackTrace();
            }
        }




        PrintWriter out = response.getWriter();
        try {
            /* TODO output your page here. You may use following sample code. */
            out.println("<html>");
            out.println("<head>");
            out.println("<title>AddNewAuthor</title>");
            out.println("</head>");
            out.println("<body>");
            out.println("<h2>Add New Author</h2>");
            out.println("<br/>");
            out.println("<form>");
            out.println("Author: <input type='text' name='title'><br/>");
            out.println("<br/>");
            out.println("<input type='submit' value='Add Author'><br/>");
            out.println("</form>");
            out.println("<br/>");
            out.println("<a href='ListAuthor'>Back</a>");
            out.println("</body>");
            out.println("</html>");
        } finally {
            out.close();
        }
    }
---------------------------------------------NewBook------------------------------------------------------------
package web;

import ejb.AuthorEntity;
import ejb.AuthorEntityFacade;
import ejb.BookEntity;
import ejb.BookEntityFacade;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Iterator;
import java.util.List;
import javax.annotation.Resource;
import javax.ejb.EJB;
import javax.ejb.EJBException;
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.JMSException;
import javax.jms.MessageProducer;
import javax.jms.ObjectMessage;
import javax.jms.Queue;
import javax.jms.Session;
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 Chamila Madushanka
 */
@WebServlet(name = "NewBook", urlPatterns = {"/NewBook"})
public class NewBook extends HttpServlet {

//    @Resource(mappedName = "jms/NewBookFactory")
//    private ConnectionFactory connectionFactory;
//    @Resource(mappedName = "jms/NewBook")
//    private Queue queue;
    BookEntity b = new BookEntity();
    int ISBN;
    double price;
    int year;
    Boolean exist = false;
    
    @EJB
    private AuthorEntityFacade authorEntityFacade;
    @EJB
    private BookEntityFacade bookEntityFacade;

    /**
     * Processes requests for both HTTP
     * <code>GET</code> and
     * <code>POST</code> methods.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");

        if (request.getParameter("isbn") != null) {
            ISBN = Integer.parseInt(request.getParameter("isbn").toString());
        }
        if (request.getParameter("year") != null) {
            year = Integer.parseInt(request.getParameter("year").toString());
        }
        if (request.getParameter("price") != null) {
            price = Double.parseDouble(request.getParameter("price"));
        }

        String title = request.getParameter("title");
        String language = request.getParameter("lang");
        String author = request.getParameter("author");
        if ((ISBN != 0) && (year != 0) && (price != 0) && (title != null) && (language != null) && (author != null)) {
            try {
                /*Connection connection = connectionFactory.createConnection();
                 Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
                 MessageProducer messageProducer = session.createProducer(queue);
                 ObjectMessage message = session.createObjectMessage();*/
                // here we create NewsEntity, that will be sent in JMS message 
                try {
                    
                        BookEntity b = new BookEntity();
                        b.setAuthor(author);
                        b.setISBN(ISBN);
                        b.setLanguage(language);
                        b.setPrice(price);
                        b.setTitle(title);
                        b.setB_year(year);
                        

                        bookEntityFacade.create(b);
                        response.sendRedirect("ListBooks");
            

                } catch (EJBException ex) {
                }



                //  response.sendRedirect("ListNews");
            } catch (EJBException ex) {
                ex.printStackTrace();
            }
        }
        PrintWriter out = response.getWriter();
        try {
            /* TODO output your page here. You may use following sample code. */
            out.println("<html>");
            out.println("<head>");
            out.println("<title>Servlet AddNewBooks</title>");
            out.println("</head>");
            out.println("<body>");
            out.println("<h2>Add New Book</h2>");
            out.println("<br/>");
            out.println("<form>");
            out.println("ISBN: <br/>");
            out.println("<input type='text' name='isbn' size='15'><br/>");
            out.println("Title: <br/>");
            out.println("<input type='text' name='title' size ='15'><br/>");
            out.println("Author Name: <br/>");
            out.println("<select name='author'>");
            out.println("<option></option>");
            List cus = authorEntityFacade.findAll();
            for (Iterator it = cus.iterator(); it.hasNext();) {
                AuthorEntity elem = (AuthorEntity) it.next();
                out.println("<option>" + elem.getName() + "</option>");
            }
            out.println("</select><br/>");
            out.println("Price: <br/>");
            out.println("<input type='text' name='price' size='15'><br/>");
            out.println("Year: <br/>");
            out.println("<input type='text' name='year' size ='15'><br/>");
            out.println("Language: <br/>");
            out.println("<input type='text' name='lang' size ='15'><br/>");
            out.println("<br/>");
            out.println("<input type='submit' value='Add Book'><br/>");
            out.println("</form>");
            out.println("<br/>");
            out.println("<a href='ListBooks'>Back</a>");
            out.println("</body>");
            out.println("</html>");
        } finally {
            out.close();
        }
    }

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /**
     * Handles the HTTP
     * <code>GET</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Handles the HTTP
     * <code>POST</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Returns a short description of the servlet.
     *
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>
}
-------------------------------------ListAuther------------------------------------------------------------
package web;

import ejb.AuthorEntity;
import ejb.AuthorEntityFacade;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Iterator;
import java.util.List;
import javax.ejb.EJB;
import javax.ejb.EJBException;
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 Chamila Madushanka
 */
@WebServlet(name = "ListAuthor", urlPatterns = {"/ListAuthor"})
public class ListAuthor extends HttpServlet {

    @EJB
    private AuthorEntityFacade authorEntityFacade;
    /**
     * Processes requests for both HTTP
     * <code>GET</code> and
     * <code>POST</code> methods.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        if (request.getParameter("Id") != null) {
            Long Id = Long.parseLong(request.getParameter("Id").toString());

            try {
                AuthorEntity ce = authorEntityFacade.find(Id);
                authorEntityFacade.remove(ce);
                response.sendRedirect("ListAuthor");
            } catch (EJBException ex) {
                ex.printStackTrace();
            }
        }
        
        PrintWriter out = response.getWriter();
        try {
            /* TODO output your page here. You may use following sample code. */
            out.println("<html>");
            out.println("<head>");
            out.println("<title>ListAuthors</title>");
            out.println("</head>");
            out.println("<body>");
            out.println("<center>");
            out.println("<h2>Authors List</h2>");
            out.println("<br/>");
            out.println("<table border='1' width='800px'>");
            out.println("<th></th>");
            out.println("<th></th>");
            out.println("<th>Name</th>");

            List aut = authorEntityFacade.findAll();
            for (Iterator it = aut.iterator(); it.hasNext();) {
                out.println("<tr>");
                AuthorEntity elem = (AuthorEntity) it.next();
                out.println(" <td> <a href='UpdateAuthor?Id=" + elem.getId() + "'>Update</a></td>");
                out.println(" <td> <a href='?Id=" + elem.getId() + "'>Delete</a></td>");

                out.println(" <td>" + elem.getName() + " </td>");
                out.println("</tr>");
            }
            out.println("</table>");
            out.println("<br/>");
            out.println("<br/>");
            out.println("<a href='NewAuthor'>Add new Author</a>");
            out.println("<br/>");
            out.println("<a href='Main'>Home</a>");
            out.println("</center>");
            out.println("</body>");
            out.println("</html>");
        } finally {            
            out.close();
        }
    }
-----------------------------------List Books-----------------------------------------------------------------
package web;

import ejb.AuthorEntityFacade;
import ejb.BookEntity;
import ejb.BookEntityFacade;
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 Chamila Madushanka
 */
@WebServlet(name = "ListBooks", urlPatterns = {"/ListBooks"})
public class ListBooks extends HttpServlet {
    
    @EJB
    private AuthorEntityFacade authorEntityFacade;
    @EJB
    private BookEntityFacade bookEntityFacade;

    /**
     * Processes requests for both HTTP
     * <code>GET</code> and
     * <code>POST</code> methods.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {
            /* TODO output your page here. You may use following sample code. */
            out.println("<html>");
            out.println("<head>");
            out.println("<title>ListBooks</title>");
            out.println("</head>");
            out.println("<body>");
            out.println("<center>");
            out.println("<h2>Books List</h2>");
            out.println("<br/>");
            out.println("<table border='1' width='800px'>");
            out.println("<th></th>");
            out.println("<th>ISBN</th>");
            out.println("<th>Title</th>");
            out.println("<th>Author Name</th>");
            out.println("<th>Price</th>");
            out.println("<th>Publish Date</th>");
            out.println("<th>Language</th>");
            List books = bookEntityFacade.findAll();
            for (Iterator it = books.iterator(); it.hasNext();) {
                out.println("<tr>");
                BookEntity elem = (BookEntity) it.next();
                out.println(" <td> <a href='UpdateBook?Id=" + elem.getId() + "'>Update</a></td>");
                out.println(" <td> <a href='ViewBook?Id=" + elem.getId() + "'> " + elem.getISBN()+ " </a></td>");
                out.println(" <td>" + elem.getTitle()+ " </td>");
                out.println(" <td>" + elem.getAuthor()+ "</td> ");
                out.println(" <td>" + elem.getPrice()+ " </td>");
                out.println(" <td>" + elem.getB_year()+ " </td>");
                out.println(" <td>" + elem.getLanguage()+ " </td>");
                out.println("</tr>");
            }
            out.println("</table>");
            out.println("<br/>");
            out.println("<a href='NewBook'>Add new Book</a>");
            out.println("<br/>");
            out.println("<a href='Main'>Home</a>");
            out.println("</center>");
            out.println("</body>");
            out.println("</html>");
        } finally {            
            out.close();
        }
    }
-------------------------------Update Auther--------------------------------------------------------------
package web;

import ejb.AuthorEntity;
import ejb.AuthorEntityFacade;
import java.io.IOException;
import java.io.PrintWriter;
import javax.annotation.Resource;
import javax.ejb.EJB;
import javax.ejb.EJBException;
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.JMSException;
import javax.jms.MessageProducer;
import javax.jms.ObjectMessage;
import javax.jms.Queue;
import javax.jms.Session;
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 Chamila Madushanka
 */
@WebServlet(name = "UpdateAuthor", urlPatterns = {"/UpdateAuthor"})
public class UpdateAuthor extends HttpServlet {

    @EJB
    private AuthorEntityFacade authorEntityFacade;
    
    AuthorEntity e;
    Long Id;
    /**
     * Processes requests for both HTTP
     * <code>GET</code> and
     * <code>POST</code> methods.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        if (request.getParameter("Id") != null) {

            Id = Long.parseLong(request.getParameter("Id").toString());

            try {
                e = authorEntityFacade.find(Id);
            } catch (EJBException ex) {
                
            }
        } else {
            e = new AuthorEntity();
            //ce.setCusID("");
            e.setName("");
        }
        
        //Long id = Long.parseLong(request.getParameter("id").toString());
        String name = request.getParameter("name");


        if ((name != null) ) {
            try {
                
                AuthorEntity c = new AuthorEntity();
                c.setId(Id);
                c.setName(name);


                authorEntityFacade.edit(c);
                response.sendRedirect("ListAuthor");

            } catch (EJBException ex) {
                ex.printStackTrace();
            }
        }
        
        
        PrintWriter out = response.getWriter();
        try {
            out.println("<html>");
            out.println("<head>");
            out.println("<title>Servlet UpdateAuthor</title>");
            out.println("</head>");
            out.println("<body>");
            out.println("<h2>Update Author</h2>");
            out.println("<br/>");
            out.println("<form>");
            
            out.println("Author Name: <br/>");
            out.println("<input type='text' name='name' size='40' value='" + e.getName() + "'><br/>");

            out.println("<br/>");
            out.println("<input type='submit' value='Update Author'> <br/>");
            out.println("</form>");
            out.println("<br/>");
            out.println("<a href='ListAuthor'>Back</a>");
            out.println("</body>");
            out.println("</html>");
        } finally {            
            out.close();
        }
    }
--------------------------------Update Book------------------------------------------------------------------
package web;

import ejb.BookEntity;
import ejb.BookEntityFacade;
import java.io.IOException;
import java.io.PrintWriter;
import javax.ejb.EJB;
import javax.ejb.EJBException;
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 Chamila Madushanka
 */
@WebServlet(name = "UpdateBook", urlPatterns = {"/UpdateBook"})
public class UpdateBook extends HttpServlet {

    @EJB
    private BookEntityFacade bookEntityFacade;
    BookEntity bo;
    Long Id;
    int ISBN, year;
    Double price;

    /**
     * Processes requests for both HTTP
     * <code>GET</code> and
     * <code>POST</code> methods.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");

        if (request.getParameter("Id") != null) {

            Id = Long.parseLong(request.getParameter("Id").toString());

            try {
                bo = bookEntityFacade.find(Id);

            } catch (EJBException ex) {
            }
        } else {
            bo = new BookEntity();
            bo.setAuthor("");
            bo.setTitle("");
            bo.setLanguage("");
        }

        try {
            ISBN = Integer.parseInt(request.getParameter("isbn").toString());
            year = Integer.parseInt(request.getParameter("year").toString());
            price = Double.parseDouble(request.getParameter("price").toString());
        } catch (NullPointerException ex) {
        }
        String title = request.getParameter("title");
        String author = request.getParameter("author");
        String language = request.getParameter("language");

        if ((ISBN != 0) && (year != 0) && (price != 0) && (title != null) && (language != null) && (author != null)) {
            try {

                BookEntity b = new BookEntity();
                b.setAuthor(author);
                b.setISBN(ISBN);
                b.setLanguage(language);
                b.setPrice(price);
                b.setTitle(title);
                b.setB_year(year);

                bookEntityFacade.edit(b);
                response.sendRedirect("ListBooks");

            } catch (EJBException ex) {
                ex.printStackTrace();
            }
        }

        PrintWriter out = response.getWriter();
        try {
            /* TODO output your page here. You may use following sample code. */
            out.println("<html>");
            out.println("<head>");
            out.println("<title>Servlet UpdateBooks</title>");
            out.println("</head>");
            out.println("<body>");
            out.println("<h2>Update Books</h2>");
            out.println("<br/>");
            out.println("<form>");
            out.println("ISBN: <br/>");
            out.println("<input type='text'  name='isbn' readonly='readonly' value='" + bo.getISBN() + "'><br/>");
            out.println("Title: <br/>");
            out.println("<input type='text'  name='title' readonly='readonly' value='" + bo.getTitle() + "'><br/>");
            out.println("Author: <br/>");
            out.println("<input type='text'  name='author' value='" + bo.getAuthor() + "'><br/>");
            out.println("Price: <br/>");
            out.println("<input type='text'  name='price' value='" + bo.getPrice() + "'><br/>");
            out.println("Year: <br/>");
            out.println("<input type='text'  name='year' value='" + bo.getB_year() + "'><br/>");
            out.println("Language: <br/>");
            out.println("<input type='text'  name='language' value='" + bo.getLanguage() + "'><br/>");
            out.println("<input type='submit' value='Update Books'> <br/>");
            out.println("</form>");
            out.println("<br/>");
            out.println("<a href='ListBooks'>Back</a>");
            out.println("</body>");
            out.println("</html>");
        } finally {
            out.close();
        }
    }
---------------------------------------View Book by ID----------------------------------------------------------
package web;

import ejb.AuthorEntityFacade;
import ejb.BookEntity;
import ejb.BookEntityFacade;
import java.io.IOException;
import java.io.PrintWriter;
import javax.ejb.EJB;
import javax.ejb.EJBException;
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 Chamila Madushanka
 */
@WebServlet(name = "ViewBook", urlPatterns = {"/ViewBook"})
public class ViewBook extends HttpServlet {

    @EJB
    private AuthorEntityFacade authorEntityFacade;
    @EJB
    private BookEntityFacade bookEntityFacade;
    BookEntity bo;
    Long id;
    /**
     * Processes requests for both HTTP
     * <code>GET</code> and
     * <code>POST</code> methods.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        if (request.getParameter("Id") != null) {

            id = Long.parseLong(request.getParameter("Id").toString());

            try {
                bo = bookEntityFacade.find(id);
            } catch (EJBException ex) {
                
            }
        }
        PrintWriter out = response.getWriter();
        try {
            /* TODO output your page here. You may use following sample code. */
            out.println("<html>");
            out.println("<head>");
            out.println("<title>Servlet ViewBook</title>");            
            out.println("</head>");
            out.println("<body>");
            out.println("<h2>View Book Details</h2>");
            out.println("<br/>");
            out.println("<form>");
            out.println("ISBN: <br/>");
            out.println("<input type='text' size='10' value='"+ bo.getISBN() +"'><br/>");
            out.println("Title: <br/>");
            out.println("<input type='text' size='15' value='"+ bo.getTitle() +"'><br/>");
            out.println("Author Name: <br/>");
            out.println("<input type='text' size='15' value='"+ bo.getAuthor()+"'><br/>");
            out.println("Price: <br/>");
            out.println("<input type='text' size='15' value='"+ bo.getPrice() +"'><br/>");
            out.println("Year: <br/>");
            out.println("<input type='text' size='15' value='"+ bo.getB_year() +"'><br/>");
            out.println("Language: <br/>");
            out.println("<input type='text' size='15' value='"+ bo.getLanguage() +"'><br/>");
            out.println("<a href='ListBooks'>Back</a>");
            out.println("</body>");
            out.println("</html>");
        } finally {            
            out.close();
        }
    }
-------------------------Delete auther by ID----------------------------------------------------------------------
@Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {

        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();

        String AuthorID = request.getParameter("AuthorID");
        String BookID = request.getParameter("BookID");
        String whatType = request.getParameter("whatType");

        AuthorEntity A_elem = (AuthorEntity) authorEntityFacade.find(Long.parseLong(AuthorID));
        BookEntity B_elem = (BookEntity) bookEntityFacade.find(Long.parseLong(BookID));

        long Author_ID=Long.parseLong(AuthorID);
        authorEntityFacade.remove(A_elem);
        Set<AuthorEntity> Aet = B_elem.getAuthors();
        Iterator<AuthorEntity> iterator = Aet.iterator();
        while (iterator.hasNext())
        {
            AuthorEntity AE = iterator.next();
            if (AE.getId() == Author_ID)
            {
                iterator.remove();
            }
        }
        B_elem.setAuthors(Aet);
        bookEntityFacade.edit(B_elem);
        if(whatType.equalsIgnoreCase("allBooks"))
        {
            response.sendRedirect("ViewBooksServlet");
        }
        else if(whatType.equalsIgnoreCase("author"))
        {
            response.sendRedirect("ListOfAuthorsServlet");
        }
    }
-------------------------------------------------------------------------------------------------------------------------