MoinMoin Logo
  • Comments
  • Immutable Page
  • Menu
    • Navigation
    • RecentChanges
    • FindPage
    • Local Site Map
    • Help
    • HelpContents
    • HelpOnMoinWikiSyntax
    • Display
    • Attachments
    • Info
    • Raw Text
    • Print View
    • Edit
    • Load
    • Save
  • Login

Navigation

  • Start
  • Sitemap
Revision 3 as of 2021-01-15 16:17:20
  • Java
  • JBoss5
  • EAR

EAR with JMS and PgSQL

earFile.png

Setup postgresql in docker

   1 cd /app/jboss-5.1.0.GA/server/default/lib
   2 wget https://jdbc.postgresql.org/download/postgresql-9.3-1103.jdbc3.jar
   3 apt install postgresql-9.5
   4 
   5 su postgres
   6 mkdir -p /var/run/postgresql/9.5-main.pg_stat_tmp/
   7 /usr/lib/postgresql/9.5/bin/postgres -D /var/lib/postgresql/9.5/main -c config_file=/etc/postgresql/9.5/main/postgresql.conf
   8 
   9 su postgres
  10 psql
  11 
  12 create user appuser with login password '12345678';
  13 create database app;
  14 grant all privileges on database app to appuser;
  15 \q
  16 
  17 Datasource in Jboss , Local Tx Datasources
  18 PostgresDS
  19 org.postgresql.Driver
  20 jdbc:postgresql://localhost/app?user=appuser&password=12345678
  21 
  22 /app/jboss-5.1.0.GA/server/default/deploy# cat PostgresDS-ds.xml 
  23 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
  24 <datasources>
  25     <local-tx-datasource>
  26         <jndi-name>PostgresDS</jndi-name>
  27         <rar-name>jboss-local-jdbc.rar</rar-name>
  28         <use-java-context>true</use-java-context>
  29         <connection-definition>javax.sql.DataSource</connection-definition>
  30         <jmx-invoker-name>jboss:service=invoker,type=jrmp</jmx-invoker-name>
  31         <min-pool-size>0</min-pool-size>
  32         <max-pool-size>10</max-pool-size>
  33         <blocking-timeout-millis>30000</blocking-timeout-millis>
  34         <idle-timeout-minutes>30</idle-timeout-minutes>
  35         <prefill>false</prefill>
  36         <background-validation>false</background-validation>
  37         <background-validation-millis>0</background-validation-millis>
  38         <validate-on-match>true</validate-on-match>
  39         <statistics-formatter>org.jboss.resource.statistic.pool.JBossDefaultSubPoolStatisticFormatter</statistics-formatter>
  40         <isSameRM-override-value>false</isSameRM-override-value>
  41         <allocation-retry>0</allocation-retry>
  42         <allocation-retry-wait-millis>5000</allocation-retry-wait-millis>
  43         <security-domain xsi:type="securityMetaData" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>
  44         <metadata/>
  45         <local-transaction/>
  46         <prepared-statement-cache-size>0</prepared-statement-cache-size>
  47         <share-prepared-statements>false</share-prepared-statements>
  48         <set-tx-query-timeout>false</set-tx-query-timeout>
  49         <query-timeout>0</query-timeout>
  50         <use-try-lock>0</use-try-lock>
  51         <driver-class>org.postgresql.Driver</driver-class>
  52         <connection-url>jdbc:postgresql://localhost/app?user=appuser&amp;password=12345678</connection-url>
  53     </local-tx-datasource>
  54 </datasources>

Create JMS queue

mkdir -p /app/jboss-5.1.0.GA/server/default/deploy/queue
nano /app/jboss-5.1.0.GA/server/default/deploy/queue/ContactsQueue-service.xml 
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<server>
    <mbean xmbean-dd="xmdesc/Queue-xmbean.xml" name="jboss.messaging.destination:service=Queue,name=ContactsQueue" code="org.jboss.jms.server.destination.QueueService">
        <attribute name="JNDIName">/queue/ContactsQueue</attribute>
        <depends optional-attribute-name="ServerPeer">jboss.messaging:service=ServerPeer</depends>
        <depends>jboss.messaging:service=PostOffice</depends>
    </mbean>
</server>

Structure

.
├── deploy_to_target.sh
├── earcontacts
│   └── pom.xml
│
├── ejbcontacts
│   ├── pom.xml
│   └── src
│       └── main
│           ├── java
│           │   └── org
│           │       └── allowed
│           │           └── bitarus
│           │               ├── ContactEntity.java
│           │               ├── ContactsLocal.java
│           │               ├── ContactsMDB.java
│           │               ├── ContactsRemote.java
│           │               └── ContactsWS.java
│           └── resources
│               └── META-INF
│                   ├── ejb-jar.xml
│                   └── persistence.xml
├── pom.xml
└── warcontacts
    ├── pom.xml
    └── src
        └── main
            ├── java
            │   └── org
            │       └── allowed
            │           └── bitarus
            │               └── Handler.java
            └── webapp
                ├── add.jsp
                ├── css
                │   ├── bootstrap.min.css
                │   └── warcontacts.css
                ├── delete.jsp
                ├── head.jsp
                ├── index.jsp
                ├── js
                │   ├── bootstrap.min.js
                │   └── jquery-3.5.1.min.js
                ├── nav.jsp
                ├── update.jsp
                ├── view.jsp
                └── WEB-INF
                    └── web.xml

deploy_to_target.sh

rm ../contacts.tgz
tar cvzf ../contacts.tgz ../contacts
cp ../contacts.tgz ../target/
docker exec -it jboss5_container /bin/sh -c 'cd /app;rm -rf contacts; tar xvzf contacts.tgz'
docker exec -it jboss5_container /bin/sh -c 'cd /app/contacts; rm  /app/jboss-5.1.0.GA/server/default/deploy/earcontacts-0.0.1.ear; mvn clean install;'
docker exec -it jboss5_container /bin/sh -c 'cp  /app/contacts/earcontacts/target/earcontacts-0.0.1.ear /app/jboss-5.1.0.GA/server/default/deploy'

pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
                      https://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <groupId>org.allowed.bitarus</groupId>
        <artifactId>contacts</artifactId>
        <version>1.0</version>
        <packaging>pom</packaging>
        <modules>
                <module>ejbcontacts</module>
                <module>warcontacts</module>
                <module>earcontacts</module>
        </modules>
</project>

earcontacts/pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <groupId>org.allowed.bitarus</groupId>
        <artifactId>earcontacts</artifactId>
        <version>0.0.1</version>
        <packaging>ear</packaging>
        <dependencies>
                <dependency>
                        <groupId>org.allowed.bitarus</groupId>
                        <artifactId>warcontacts</artifactId>
                        <version>0.0.1</version>
                        <type>war</type>
                </dependency>
                <dependency>
                        <groupId>org.allowed.bitarus</groupId>
                        <artifactId>ejbcontacts</artifactId>
                        <version>0.0.1</version>
                        <type>ejb</type>
                </dependency>
        </dependencies>
        <build>
                <plugins>
                        <plugin>
                                <groupId>org.apache.maven.plugins</groupId>
                                <artifactId>maven-ear-plugin</artifactId>
                                <version>2.10.1</version>
                                <configuration>
                                        <version>5</version>
                                        <defaultLibBundleDir>lib</defaultLibBundleDir>
                                        <filtering>true</filtering>
                                        <modules>
                                                <ejbModule>
                                                        <groupId>org.allowed.bitarus</groupId>
                                                        <artifactId>ejbcontacts</artifactId>
                                                        <bundleDir>/</bundleDir>
                                                </ejbModule>
                                                <webModule>
                                                        <groupId>org.allowed.bitarus</groupId>
                                                        <artifactId>warcontacts</artifactId>
                                                        <bundleDir>/</bundleDir>
                                                </webModule>
                                        </modules>
                                </configuration>
                        </plugin>
                        <plugin>
                                <artifactId>maven-compiler-plugin</artifactId>
                                <configuration>
                                        <source>1.5</source>
                                        <target>1.5</target>
                                </configuration>
                        </plugin>
                </plugins>
        </build>
</project>

ejbcontacts/pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <groupId>org.allowed.bitarus</groupId>
        <artifactId>ejbcontacts</artifactId>
        <version>0.0.1</version>
        <packaging>ejb</packaging>
        <dependencies>
                <dependency>
                        <groupId>javaee</groupId>
                        <artifactId>javaee-api</artifactId>
                        <version>5</version>
                        <scope>provided</scope>
                </dependency>
        </dependencies>
        <build>
                <plugins>
                        <plugin>
                                <artifactId>maven-compiler-plugin</artifactId>
                                <configuration>
                                        <source>1.5</source>
                                        <target>1.5</target>
                                </configuration>
                        </plugin>
                </plugins>
        </build>
</project>

ejbcontacts/src/main/java/org/allowed/bitarus/ContactEntity.java

package org.allowed.bitarus;

import java.util.Date;
import javax.persistence.Id;
import javax.persistence.Entity;
import javax.persistence.Column;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.TemporalType;
import javax.persistence.Temporal;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;

@Entity
@NamedQueries( { @NamedQuery(name="Contacts.byId",query="select a from ContactEntity a where a.id = :id")   } )
public class ContactEntity{
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY) 
    private long id;

    @Column
    @Temporal(TemporalType.TIMESTAMP) 
    private Date creationDate;

    @Column
    private String firstName;

    @Column
    private String lastName;

    @Column
    private String address;

    @Column
    private String phoneNumber;

    public void setId(long id){this.id=id;}
    public long getId(){return this.id;}

    public void setCreationDate(Date creationDate){this.creationDate=creationDate;}
    public Date getCreationDate(){return this.creationDate;}

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

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

    public void setAddress(String address){this.address=address;}
    public String getAddress(){return this.address;}

    public void setPhoneNumber(String phoneNumber){this.phoneNumber=phoneNumber;}
    public String getPhoneNumber(){return this.phoneNumber;}

}

ejbcontacts/src/main/java/org/allowed/bitarus/ContactsLocal.java

package org.allowed.bitarus;

import javax.ejb.Local;
import java.util.List;

@Local
public interface ContactsLocal {
        void add(String firstName, String lastName, String address, String phoneNumber);

        List<ContactEntity> getAll();

        ContactEntity get(long id);

        void remove(long id);

        void edit(long id, String firstName, String lastName, String address, String phoneNumber);

        void sendMessage(String message);
}

ejbcontacts/src/main/java/org/allowed/bitarus/ContactsMDB.java

package org.allowed.bitarus;

import javax.ejb.ActivationConfigProperty;
import javax.ejb.MessageDriven;
import javax.jms.Message;
import javax.jms.MessageListener;
import javax.jms.TextMessage;

/*
mkdir -p /app/jboss-5.1.0.GA/server/default/deploy/queue
nano ContactsQueue-service.xml 
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<server>
    <mbean xmbean-dd="xmdesc/Queue-xmbean.xml" name="jboss.messaging.destination:service=Queue,name=ContactsQueue" code="org.jboss.jms.server.destination.QueueService">
        <attribute name="JNDIName">/queue/ContactsQueue</attribute>
        <depends optional-attribute-name="ServerPeer">jboss.messaging:service=ServerPeer</depends>
        <depends>jboss.messaging:service=PostOffice</depends>
    </mbean>
</server> 
 * */
@MessageDriven(mappedName = "queue/ContactsQueue", messageListenerInterface = MessageListener.class, activationConfig = {
                @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue"),
                @ActivationConfigProperty(propertyName = "destination", propertyValue = "queue/ContactsQueue") })
public class ContactsMDB implements MessageListener {

        public void onMessage(Message inMessage) {
                try {
                        String text = ((TextMessage) inMessage).getText();
                        System.out.println(String.format("Got message %s", text));
                } catch (Exception ex) {
                        ex.printStackTrace();
                }
        }
}

ejbcontacts/src/main/java/org/allowed/bitarus/ContactsRemote.java

package org.allowed.bitarus;

import javax.ejb.Remote;
import java.util.List;

@Remote
public interface ContactsRemote {
        void add(String firstName, String lastName, String address, String phoneNumber);

        List<ContactEntity> getAll();

        ContactEntity get(long id);

        void remove(long id);

        void edit(long id, String firstName, String lastName, String address, String phoneNumber);

        void sendMessage(String message);
}

ejbcontacts/src/main/java/org/allowed/bitarus/ContactsWS.java

package org.allowed.bitarus;

import javax.annotation.Resource;
import javax.ejb.Stateless;
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.MessageProducer;
import javax.jms.Queue;
import javax.jms.Session;
import javax.jms.TextMessage;
import javax.jws.WebMethod;
import javax.jws.WebService;
import org.allowed.bitarus.ContactsRemote;
import javax.persistence.PersistenceContext;
import javax.persistence.EntityManager;
import java.util.List;
import javax.persistence.NamedQuery;

@Stateless
@WebService
public class ContactsWS implements ContactsRemote, ContactsLocal {
        @PersistenceContext(unitName = "puContactsDefaultDS")
        EntityManager em;
        @Resource(mappedName = "ConnectionFactory")
        private ConnectionFactory connectionFactory;
        @Resource(mappedName = "queue/ContactsQueue")
        private Queue queue;

        @WebMethod
        public void add(String firstName, String lastName, String address, String phoneNumber) {
                ContactEntity c = new ContactEntity();
                c.setFirstName(firstName);
                c.setLastName(lastName);
                c.setAddress(address);
                c.setPhoneNumber(phoneNumber);
                c.setCreationDate(new java.util.Date());
                em.persist(c);
        }

        @WebMethod
        public List<ContactEntity> getAll() {
                return em.createQuery("select a from ContactEntity a ").getResultList();
        }

        @WebMethod
        public ContactEntity get(long id) {
                // return (ContactEntity) em.createQuery("select a from ContactEntity a where
                // a.id = :id").setParameter("id", id).getSingleResult();
                return (ContactEntity) em.createNamedQuery("Contacts.byId").setParameter("id", id).getSingleResult();
        }

        @WebMethod
        public void remove(long id) {
                ContactEntity ent = (ContactEntity) em.createNamedQuery("Contacts.byId").setParameter("id", id)
                                .getSingleResult();
                em.remove(ent);
        }

        @WebMethod
        public void edit(long id, String firstName, String lastName, String address, String phoneNumber) {
                ContactEntity ent = (ContactEntity) em.createNamedQuery("Contacts.byId").setParameter("id", id)
                                .getSingleResult();
                ent.setFirstName(firstName);
                ent.setLastName(lastName);
                ent.setAddress(address);
                ent.setPhoneNumber(phoneNumber);
                em.persist(ent);
        }

        @WebMethod
        public void sendMessage(String message) {
                try {
                        Connection connection = connectionFactory.createConnection();
                        Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
                        MessageProducer messageProducer = session.createProducer(queue);
                        TextMessage textMessage = session.createTextMessage();
                        textMessage.setText(message);
                        messageProducer.send(textMessage);
                        messageProducer.close();
                        session.close();
                        connection.close();
                } catch (Exception ex) {
                        ex.printStackTrace();
                }
        }
}

ejbcontacts/src/main/resources/META-INF/ejb-jar.xml

<ejb-jar xmlns="http://java.sun.com/xml/ns/javaee"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd"
        version="3.0">
        <enterprise-beans>
                <session>
                        <ejb-name>ContactsWS</ejb-name>
                        <business-local>org.allowed.bitarus.ContactsLocal</business-local>
                        <business-remote>org.allowed.bitarus.ContactsRemote</business-remote>
                        <ejb-class>org.allowed.bitarus.ContactsWS</ejb-class>
                        <session-type>Stateless</session-type>
                        <transaction-type>Container</transaction-type>
                </session>
        </enterprise-beans>
</ejb-jar>

ejbcontacts/src/main/resources/META-INF/persistence.xml

<persistence version="1.0"
        xmlns="http://java.sun.com/xml/ns/persistence"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
        <persistence-unit name="puContactsDefaultDS"
                transaction-type="JTA">
                <jta-data-source>java:/PostgresDS</jta-data-source>
                <properties>
                        <property name="hibernate.show_sql" value="true" />
                        <property name="hibernate.format_sql" value="true" />
                        <property name="hibernate.dialect"
                                value="org.hibernate.dialect.PostgreSQLDialect" />
                        <property name="hibernate.hbm2ddl.auto" value="update" />
                </properties>
        </persistence-unit>
</persistence>

warcontacts/pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <groupId>org.allowed.bitarus</groupId>
        <artifactId>warcontacts</artifactId>
        <version>0.0.1</version>
        <packaging>war</packaging>
        <dependencies>
                <dependency>
                        <groupId>javaee</groupId>
                        <artifactId>javaee-api</artifactId>
                        <version>5</version>
                        <scope>provided</scope>
                </dependency>
                <dependency>
                        <groupId>org.allowed.bitarus</groupId>
                        <artifactId>ejbcontacts</artifactId>
                        <version>0.0.1</version>
                        <scope>provided</scope>
                </dependency>
        </dependencies>
        <build>
                <plugins>
                        <plugin>
                                <artifactId>maven-compiler-plugin</artifactId>
                                <configuration>
                                        <source>1.5</source>
                                        <target>1.5</target>
                                </configuration>
                        </plugin>
                </plugins>
        </build>
</project>

warcontacts/src/main/java/org/allowed/bitarus/Handler.java

package org.allowed.bitarus;

import java.util.logging.Logger;
import java.util.logging.Level;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.PageContext;
import javax.naming.InitialContext;

import java.io.IOException;
import java.util.List;
import javax.naming.NamingEnumeration;
import javax.naming.NameClassPair;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Map;

public class Handler {  
        private static final String CONTACTS_WS_LOCAL = "earcontacts-0.0.1/ContactsWS/local";
        private ServletRequest request;
        private ServletResponse response;
        private JspWriter out;

        public Handler(ServletRequest request, ServletResponse response, JspWriter out) {
                this.request = request;
                this.response = response;
                this.out = out;
        }

        public Handler(PageContext pageContext) {
                this.request = pageContext.getRequest();
                this.response = pageContext.getResponse();
                this.out = (JspWriter) pageContext.getAttribute(PageContext.OUT);

                HttpServletRequest hsr = (HttpServletRequest) this.request;
                System.out.println(String.format("Current method %s", hsr.getMethod()));
                System.out.println(String.format("Path %s", hsr.getServletPath()));

                if ("POST".equals(hsr.getMethod())) {
                        Map<String, String> params = hsr.getParameterMap();
                        for (String key : params.keySet()) {
                                System.out.println(String.format("%s:%s", key, hsr.getParameter(key)));
                        }

                        handleAddPost(hsr);
                        handleDeletePost(hsr);
                        handleUpdatePost(hsr);
                }
        }

        private void handleUpdatePost(HttpServletRequest hsr) {
                if ("/update.jsp".equals(hsr.getServletPath())) {
                        try {
                                InitialContext context = new InitialContext();
                                ContactsLocal contacts = (ContactsLocal) context.lookup(CONTACTS_WS_LOCAL);
                                long id = Integer.parseInt(hsr.getParameter("cid"));
                                String firstName = hsr.getParameter("firstname");
                                String lastName = hsr.getParameter("lastname");
                                String address = hsr.getParameter("address");
                                String phoneNumber = hsr.getParameter("phonenumber");
                                contacts.edit(id, firstName, lastName, address, phoneNumber);
                                redirectToIndex(hsr);
                        } catch (Exception ex) {
                        }
                }
        }

        private void handleDeletePost(HttpServletRequest hsr) {
                if ("/delete.jsp".equals(hsr.getServletPath())) {
                        try {
                                InitialContext context = new InitialContext();
                                ContactsLocal contacts = (ContactsLocal) context.lookup(CONTACTS_WS_LOCAL);
                                contacts.remove(Integer.parseInt(hsr.getParameter("id")));
                                redirectToIndex(hsr);
                        } catch (Exception ex) {
                        }
                }
        }

        private void handleAddPost(HttpServletRequest hsr) {
                if ("/add.jsp".equals(hsr.getServletPath())) {
                        try {
                                InitialContext context = new InitialContext();
                                ContactsLocal contacts = (ContactsLocal) context.lookup(CONTACTS_WS_LOCAL);
                                contacts.add(hsr.getParameter("firstname"), hsr.getParameter("lastname"), hsr.getParameter("address"),
                                                hsr.getParameter("phonenumber"));
                                redirectToIndex(hsr);
                        } catch (Exception ex) {
                        }
                }
        }

        private void redirectToIndex(HttpServletRequest hsr) throws IOException {
                ((HttpServletResponse) this.response).sendRedirect(hsr.getContextPath() + "/index.jsp");
        }

        public void writeHandler() {
                try {
                        this.out.println(String.format("<p>Handler up %s</p>", this.request.getParameter("user")));
                } catch (Exception ex) {
                }
        }

        public void writeIP() {
                try {
                        this.out.print("!!! Your IP address is " + this.request.getRemoteAddr());
                } catch (Exception ex) {
                }
        }

        public List<ContactEntity> getAllContacts() {
                List<ContactEntity> ret = null;
                try {
                        InitialContext context = new InitialContext();

                        ContactsLocal contacts = (ContactsLocal) context.lookup(CONTACTS_WS_LOCAL);
                        ret = contacts.getAll();
                } catch (Exception ex) {
                }
                return ret;
        }

        public ContactEntity getContact(long id) {

                ContactEntity ret = null;
                try {
                        InitialContext context = new InitialContext();

                        ContactsLocal contacts = (ContactsLocal) context.lookup(CONTACTS_WS_LOCAL);
                        ret = contacts.get(id);
                } catch (Exception ex) {
                }

                return ret;
        }
}

warcontacts/src/main/webapp/add.jsp

<%@page import="org.allowed.bitarus.Handler, java.util.List, org.allowed.bitarus.ContactEntity" %>
<% Handler h = new Handler(pageContext); %>
<html>
    <head>
        <jsp:include page="head.jsp" />  
    </head>
    <body>       
        <jsp:include page="nav.jsp" />
        <div class="container topspace">
            <div class="row"> 
                <div class="col-sm-2"></div>
                <div class="col-sm-8">    
                    <form  action="add.jsp" method="post"  >
                        <label for="firstname">First name:</label><br/>
                        <input type="text" id="firstname" name="firstname" class="form-control"><br/>
                        <label for="lastname">Last name:</label><br/>
                        <input type="text" id="lastname" name="lastname" class="form-control"><br/>
                        <label for="address">Address::</label><br/>
                        <input type="text" id="Address:" name="address" class="form-control"><br/>
                        <label for="phonenumber">Phone number:</label><br/>
                        <input type="text" id="phonenumber" name="phonenumber" class="form-control"><br/>
                        <input type="submit" value="Add"  class="form-control btn btn-primary button"/>
                    </form>    
                </div> 
                <div class="col-sm-2"></div>   
            </div>
        </div>          
    </body>
</html>

warcontacts/src/main/webapp/css/bootstrap.min.css

warcontacts/src/main/webapp/css/warcontacts.css

.button{margin-top:2px; margin-bottom:2px;}
.topspace { padding-top: 10px; }    2020-06-24T18:20:45 [vitor@debian:3 ~/JBoss5Docker/contacts]

warcontacts/src/main/webapp/delete.jsp

<%@page import="org.allowed.bitarus.Handler, java.util.List, org.allowed.bitarus.ContactEntity" %>
<% Handler h = new Handler(pageContext); %>
<html>
    <head>
        <jsp:include page="head.jsp" />  
    </head>
    <body>       
        <% ContactEntity ci = h.getContact( Integer.parseInt( request.getParameter("id") ) );  %> 
        <jsp:include page="nav.jsp" />
        <div class="container  topspace">
            <div class="row"> 
                <div class="col-sm-2"></div>
                <div class="col-sm-8">         
                    <% if(ci!=null) { %>
                        <p><strong>Id:</strong>  <%= ci.getId() %></p>
                        <p><strong>First name:</strong>  <%= ci.getFirstName() %></p>
                        <p><strong>Last name:</strong>  <%= ci.getLastName() %></p>
                        <p><strong>Creation date:</strong> <%= ci.getCreationDate() %></p>
                        <p><strong>Address:</strong>  <%= ci.getAddress() %></p>
                        <p><strong>Phone:</strong>  <%= ci.getPhoneNumber() %></p>

                        <form action="delete.jsp" method="post">
                            <input type="hidden" id="id" name="id" value="<%=ci.getId()%>"  />
                            <input type="submit" class="form-control btn btn-primary button" value="Delete">
                        </form>
                    <% }  %>
                </div> 
                <div class="col-sm-2"></div>   
            </div>
        </div>              
    </body>
</html>

warcontacts/src/main/webapp/head.jsp

  <link rel="stylesheet" href="css/bootstrap.min.css"/>
  <link rel="stylesheet" href="css/warcontacts.css"/>
  <script src="js/jquery-3.5.1.min.js"></script>
  <script src="js/bootstrap.min.js" ></script>

warcontacts/src/main/webapp/index.jsp

<%@page import="org.allowed.bitarus.Handler, java.util.List, org.allowed.bitarus.ContactEntity" %>
<% Handler h = new Handler(pageContext); %>
<html>
        <head>
                <jsp:include page="head.jsp" />  
        </head>
    <body>        
        <jsp:include page="nav.jsp" />      
                <div class="container topspace">
                <div class="row"> 
                        <div class="col-sm-2"></div>
                        <div class="col-sm-8">
                                <% List<ContactEntity> contacts = h.getAllContacts(); %>
                                <a href="add.jsp" class="btn btn-primary button">Add</a>
                                <table class="table table-stripped" >
                                    <tr>
                                                        <th>FirstName</th>
                                                        <th>LastName</th>
                                                        <th>Actions</th>
                                </tr>
                                        <% for(int i=0; i<contacts.size() ;i++){  %>
                                        <tr>
                                                                <% ContactEntity contact = ((ContactEntity)contacts.get(i));  %>
                                                                <td><%= contact.getFirstName() %></td>
                                                                <td><%= contact.getLastName() %></td>
                                                                <td>
                                                                <a href="view.jsp?id=<%=contact.getId()%>" class="btn btn-primary button">View</a>
                                                                        <a href="update.jsp?id=<%=contact.getId()%>" class="btn btn-primary button">Update</a>
                                                                        <a href="delete.jsp?id=<%=contact.getId()%>" class="btn btn-primary button">Delete</a>     
                                                                </td>
                                        </tr>
                                        <%}%>
                               </table>
                        </div> 
                        <div class="col-sm-2"></div>   
                </div>
                </div> 
        </body>
</html>

warcontacts/src/main/webapp/js/bootstrap.min.js

warcontacts/src/main/webapp/js/jquery-3.5.1.min.js

warcontacts/src/main/webapp/nav.jsp

<nav class="navbar navbar-dark bg-dark navbar-fixed-top">
    <div class="container">
        <div class="navbar-header">
            <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
                <span class="sr-only">Toggle navigation</span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
            </button>
            <a class="navbar-brand" href="index.jsp">Contacts</a>
        </div>
        <div id="navbar" class="collapse navbar-collapse">
          <ul class="nav navbar-nav">
              <li class="active"><a href="index.jsp">List</a></li>
          </ul>
        </div>
    </div>
</nav>

warcontacts/src/main/webapp/update.jsp

<%@page import="org.allowed.bitarus.Handler, java.util.List, org.allowed.bitarus.ContactEntity" %>
<% Handler h = new Handler(pageContext); %>
<html>
    <head>
        <jsp:include page="head.jsp" />  
    </head>
    <body>       
        <jsp:include page="nav.jsp" />
        <div class="container topspace">
            <div class="row"> 
                <div class="col-sm-2"></div>
                <div class="col-sm-8">              
                                        <% if( request.getParameter("id") != null ) { %>
                                        <% ContactEntity ci = h.getContact( Integer.parseInt( request.getParameter("id") ) );  %>
                                                <form  action="update.jsp" method="post"  >
                                                        <label for="firstname">First name:</label><br/>
                                                        <input class="form-control" type="text" id="firstname" name="firstname" value="<%= ci.getFirstName() %>"/><br/>
                                                        <label for="lastname">Last name:</label><br/>
                                                        <input class="form-control" type="text" id="lastname" name="lastname" value="<%= ci.getLastName() %>" /><br/>
                                                        <label for="address">Address::</label><br/>
                                                        <input class="form-control" type="text" id="Address:" name="address" value="<%= ci.getAddress() %>"/><br/>
                                                        <label for="phonenumber">Phone number:</label><br/>
                                                        <input class="form-control" type="text" id="phonenumber" name="phonenumber" value="<%= ci.getPhoneNumber() %>"/><br/>
                                                        <input class="form-control" type="hidden" id="cid" name="cid" value="<%=ci.getId()%>"/> 
                                                        <input type="submit" value="Update" class="form-control btn btn-primary button" >
                                                </form>
                                        <% } %> 
                </div> 
                <div class="col-sm-2"></div>   
            </div>
        </div>                   
    </body>
</html>

warcontacts/src/main/webapp/view.jsp

<%@page import="org.allowed.bitarus.Handler, java.util.List, org.allowed.bitarus.ContactEntity" %>
<% Handler h = new Handler(pageContext); %>
<html>
    <head>
        <jsp:include page="head.jsp" />  
    </head>
    <body>       
        <jsp:include page="nav.jsp" />
        <div class="container topspace">
            <div class="row"> 
                <div class="col-sm-2"></div>
                <div class="col-sm-8">    
                    <% ContactEntity ci = h.getContact( Integer.parseInt( request.getParameter("id") ) );  %> 
                    <p><strong>Id:</strong>  <%= ci.getId() %></p>
                    <p><strong>First name:</strong>  <%= ci.getFirstName() %></p>
                    <p><strong>Last name:</strong>  <%= ci.getLastName() %></p>
                    <p><strong>Creation date:</strong> <%= ci.getCreationDate() %></p>
                    <p><strong>Address:</strong>  <%= ci.getAddress() %></p>
                    <p><strong>Phone:</strong>  <%= ci.getPhoneNumber() %></p>
                </div> 
                <div class="col-sm-2"></div>   
            </div>
        </div>         
    </body>
</html>

warcontacts/src/main/webapp/WEB-INF/web.xml

<?xml version="1.0"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
</web-app>
  • MoinMoin Powered
  • Python Powered
  • GPL licensed
  • Valid HTML 4.01