| Size: 26246 Comment:  | Size: 39278 Comment:  | 
| Deletions are marked like this. | Additions are marked like this. | 
| Line 677: | Line 677: | 
| <dependency> <groupId>org.allowed.bitarus</groupId> <artifactId>ejbjee5</artifactId> <version>0.0.1</version> <scope>provided</scope> </dependency> | <dependency> <groupId>org.allowed.bitarus</groupId> <artifactId>ejbjee5</artifactId> <version>0.0.1</version> <scope>provided</scope> </dependency> | 
| Line 840: | Line 838: | 
| === src/main/webapp/otherindex.jsp === {{{#!highlight html <%@page import="org.allowed.bitarus.Handler" %> <jsp:useBean id="test" class="org.allowed.bitarus.TestBean" /> <% //Handler h = new Handler(request,response,out); %> <% Handler h = new Handler(pageContext); %> <html> <body> <p>Other Hello</p> <p>World <jsp:getProperty name="test" property="name" /> </p> <% h.writeHandler(); %> <h2><% out.print("Your IP address is " + request.getRemoteAddr()); %></h2> <h3><% h.writeIP(); %></h3> </body> </html> }}} == Spring 3.0.1 in JBoss 5 == * https://docs.spring.io/spring/docs/3.0.x/spring-framework-reference/html/new-in-3.html#new-in-3-intro === pom.xml === {{{#!highlight xml <?xml version="1.0" encoding="UTF-8"?> <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>testSpringMVCJSP</artifactId> <version>0.1.0</version> <packaging>war</packaging> <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>3.0.1.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>3.0.1.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>3.0.1.RELEASE</version> </dependency> </dependencies> <build> <sourceDirectory>src/main/java</sourceDirectory> <plugins> <plugin> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.5</source> <target>1.5</target> </configuration> </plugin> </plugins> </build> </project> }}} === src/main/java/org/allowed/bitarus/hello/HelloController.java === {{{#!highlight java package org.allowed.bitarus.hello; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; @Controller public class HelloController { @RequestMapping("/hello") public String hellox(@RequestParam(value="name", required=false, defaultValue="World") String name, Model model) { model.addAttribute("name", name); return "greeting"; } } }}} === src/main/webapp/WEB-INF/mvc-dispatcher-servlet.xml === {{{#!highlight xml <beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"> <context:component-scan base-package="org.allowed.bitarus.hello" /> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix"> <value>/WEB-INF/pages/</value> </property> <property name="suffix"> <value>.jsp</value> </property> </bean> </beans> }}} === src/main/webapp/WEB-INF/pages/greeting.jsp === {{{#!highlight html <!DOCTYPE HTML> <html xmlns:th="http://www.thymeleaf.org"> <head> <title>Getting Started: Serving Web Content</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> </head> <body> <p>Hello ${name}</p> </body> </html> }}} === src/main/webapp/WEB-INF/web.xml === {{{#!highlight xml <web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <display-name>Spring MVC Application + JSP</display-name> <servlet> <servlet-name>mvc-dispatcher</servlet-name> <servlet-class> org.springframework.web.servlet.DispatcherServlet </servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>mvc-dispatcher</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> <context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/mvc-dispatcher-servlet.xml</param-value> </context-param> <listener> <listener-class> org.springframework.web.context.ContextLoaderListener </listener-class> </listener> </web-app> }}} == EJB 3.0 Contacts, JPA == === src/main/java/org/allowed/bitarus/ContactsLocal.java === {{{#!highlight 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 ); } }}} === src/main/java/org/allowed/bitarus/ContactsWS.java === {{{#!highlight java package org.allowed.bitarus; import javax.ejb.Stateless; 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; @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); } } }}} === src/main/java/org/allowed/bitarus/ContactsRemote.java === {{{#!highlight 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 ); } }}} === src/main/java/org/allowed/bitarus/ContactEntity.java === {{{#!highlight 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;} } }}} === src/main/resources/META-INF/ejb-jar.xml === {{{#!highlight 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> }}} === src/main/resources/META-INF/persistence.xml === {{{#!highlight 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:/DefaultDS</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.HSQLDialect"/> <property name="hibernate.hbm2ddl.auto" value="update"/> </properties> </persistence-unit> </persistence> }}} === pom.xml === {{{#!highlight 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> <sourceDirectory>src</sourceDirectory> <plugins> <plugin> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.5</source> <target>1.5</target> </configuration> </plugin> </plugins> </build> </project> }}} | 
JBoss5
- JEE5 certified  - Java EE 5 (May 11, 2006) (Java Servlet 2.5, JSP 2.1, JSTL 1.2, JSF 1.2, EJB 3.0, JDBC 3.0)
 
- https://docs.oracle.com/javaee/5/tutorial/doc/javaeetutorial5.pdf 
- Web container
- EJB container
- Requires jdk-1_5_0_22-linux-amd64.bin from Oracle to run
- run.sh -c options :minimal default all standard web
 
  
 
Locally on debian buster
cp jdk-1_5_0_22-linux-amd64.bin ~ cd ~ ./jdk-1_5_0_22-linux-amd64.bin unzip jboss-5.1.0.GA.zip JAVA_HOME=jdk1.5.0_22/ jboss-5.1.0.GA/bin/run.sh -b 0.0.0.0 http://127.0.0.1:8080/ wget https://archive.apache.org/dist/maven/maven-3/3.1.1/binaries/apache-maven-3.1.1-bin.zip unzip apache-maven-3.1.1-bin.zip JAVA_HOME=jdk1.5.0_22/ ~/apache-maven-3.1.1/bin/mvn -version JAVA_HOME=~/jdk1.5.0_22/ ~/apache-maven-3.1.1/bin/mvn clean install
Docker
Dockerfile
FROM ubuntu:16.04 RUN apt-get update && apt-get install -y openssh-server unzip openjdk-8-jdk net-tools maven vim RUN mkdir /var/run/sshd RUN echo 'root:screencast' | chpasswd RUN sed -i 's/PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config # SSH login fix. Otherwise user is kicked off after login RUN sed 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd ENV NOTVISIBLE "in users profile" RUN echo "export VISIBLE=now" >> /etc/profile RUN useradd userx RUN echo 'userx:userx' | chpasswd EXPOSE 22 8080 8081 8009 8009 CMD ["/usr/sbin/sshd", "-D"]
   1 wget http://sourceforge.net/projects/jboss/files/JBoss/JBoss-5.1.0.GA/jboss-5.1.0.GA.zip
   2 unzip  jboss-5.1.0.GA.zip
   3 
   4 nano Dockerfile
   5 
   6 docker build -t docker_jboss5 . 
   7 mkdir target
   8 docker run -d -p 8080:8080 --name jboss5_container  --mount type=bind,source="$(pwd)"/target,target=/app  docker_jboss5
   9 #docker run -d -P --name jboss5_container  --mount type=bind,source="$(pwd)"/target,target=/app  docker_jboss5
  10 mv ~/jboss-5.1.0.GA.zip target/
  11 docker exec -it jboss5_container  bash
  12 cd /app
  13 unzip jboss-5.1.0.GA.zip
  14 
  15 ./jdk-1_5_0_22-linux-amd64.bin
  16 /app# jdk1.5.0_22/bin/java -version
  17 #java version "1.5.0_22"
  18 #Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_22-b03)
  19 #Java HotSpot(TM) 64-Bit Server VM (build 1.5.0_22-b03, mixed mode)
  20 
  21 #/app/jdk1.5.0_22/bin/java -jar run.jar 
  22 
  23 mvn -version
  24 #Apache Maven 3.3.9
  25 #Maven home: /usr/share/maven
  26 #Java version: 1.8.0_252, vendor: Private Build
  27 #Java home: /usr/lib/jvm/java-8-openjdk-amd64/jre
  28 #Default locale: en_US, platform encoding: ANSI_X3.4-1968
  29 #OS name: "linux", version: "4.19.0-6-amd64", arch: "amd64", family: "unix"
  30 
  31 cd /app/jboss-5.1.0.GA/bin
  32 JAVA_HOME=/app/jdk1.5.0_22 ./run.sh -c all -b 0.0.0.0
Example EJB for jboss5 in docker container
 
 
- docker exec -it jboss5_container bash
- cd /app/ejbjee5
- mvn clean compile package
- cp /app/ejbjee5/target/ejbjee5-0.0.1.jar /app/jboss-5.1.0.GA/server/default/deploy/
18:04:14,955 INFO  [JBossASKernel] Created KernelDeployment for: ejbjee5-0.0.1.jar
18:04:14,955 INFO  [JBossASKernel] installing bean: jboss.j2ee:jar=ejbjee5-0.0.1.jar,name=ScheduleWS,service=EJB3
18:04:14,955 INFO  [JBossASKernel]   with dependencies:
18:04:14,955 INFO  [JBossASKernel]   and demands:
18:04:14,955 INFO  [JBossASKernel]      jboss.ejb:service=EJBTimerService
18:04:14,955 INFO  [JBossASKernel]   and supplies:
18:04:14,956 INFO  [JBossASKernel]      Class:org.allowed.bitarus.ScheduleRemote
18:04:14,956 INFO  [JBossASKernel]      jndi:ScheduleWS/local-org.allowed.bitarus.ScheduleLocal
18:04:14,956 INFO  [JBossASKernel]      jndi:ScheduleWS/remote
18:04:14,956 INFO  [JBossASKernel]      Class:org.allowed.bitarus.ScheduleLocal
18:04:14,956 INFO  [JBossASKernel]      jndi:ScheduleWS/local
18:04:14,956 INFO  [JBossASKernel]      jndi:ScheduleWS/remote-org.allowed.bitarus.ScheduleRemote
18:04:14,956 INFO  [JBossASKernel] Added bean(jboss.j2ee:jar=ejbjee5-0.0.1.jar,name=ScheduleWS,service=EJB3) to KernelDeployment of: ejbjee5-0.0.1.jar
18:04:14,957 INFO  [EJB3EndpointDeployer] Deploy AbstractBeanMetaData@542c21cb{name=jboss.j2ee:jar=ejbjee5-0.0.1.jar,name=ScheduleWS,service=EJB3_endpoint bean=org.jboss.ejb3.endpoint.deployers.impl.EndpointImpl properties=[container] constructor=null autowireCandidate=true}
18:04:15,020 INFO  [SessionSpecContainer] Starting jboss.j2ee:jar=ejbjee5-0.0.1.jar,name=ScheduleWS,service=EJB3
18:04:15,020 INFO  [EJBContainer] STARTED EJB: org.allowed.bitarus.ScheduleWS ejbName: ScheduleWS
18:04:15,041 INFO  [JndiSessionRegistrarBase] Binding the following Entries in Global JNDI:
        ScheduleWS/remote - EJB3.x Default Remote Business Interface
        ScheduleWS/remote-org.allowed.bitarus.ScheduleRemote - EJB3.x Remote Business Interface
        ScheduleWS/local - EJB3.x Default Local Business Interface
        ScheduleWS/local-org.allowed.bitarus.ScheduleLocal - EJB3.x Local Business Interface
18:04:15,097 INFO  [DefaultEndpointRegistry] register: jboss.ws:context=ejbjee5-0.0.1,endpoint=ScheduleWS
18:04:15,225 INFO  [WSDLFilePublisher] WSDL published to: file:/app/jboss-5.1.0.GA/server/default/data/wsdl/ejbjee5-0.0.1.jar/ScheduleWSService4435570151338675382.wsdl
18:04:15,248 INFO  [TomcatDeployment] deploy, ctxPath=/ejbjee5-0.0.1
./src/main/java/org/allowed/bitarus/ScheduleRemote.java
./src/main/java/org/allowed/bitarus/ScheduleLocal.java
./src/main/java/org/allowed/bitarus/ScheduleWS.java
   1 package org.allowed.bitarus;
   2 
   3 import javax.ejb.Stateless;
   4 import javax.jws.WebMethod;
   5 import javax.jws.WebService;
   6 import org.allowed.bitarus.ScheduleRemote;
   7 
   8 @Stateless
   9 @WebService
  10 public class ScheduleWS implements ScheduleRemote {
  11 
  12         @WebMethod
  13         public int addSchedule(int val1, int val2) {
  14                 return val1 + val2;
  15         }
  16 }
./src/main/resources/META-INF/ejb-jar.xml
   1 <ejb-jar xmlns="http://java.sun.com/xml/ns/javaee"
   2         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   3         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd"
   4         version="3.0">
   5         <enterprise-beans>
   6                 <session>
   7                         <ejb-name>ScheduleWS</ejb-name>
   8                         <business-local>org.allowed.bitarus.ScheduleLocal</business-local>
   9                         <business-remote>org.allowed.bitarus.ScheduleRemote</business-remote>
  10                         <ejb-class>org.allowed.bitarus.ScheduleWS</ejb-class>
  11                         <session-type>Stateless</session-type>
  12                         <transaction-type>Container</transaction-type>
  13                 </session>
  14         </enterprise-beans>
  15 </ejb-jar>
./pom.xml
   1 <project xmlns="http://maven.apache.org/POM/4.0.0"
   2         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   3         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   4         <modelVersion>4.0.0</modelVersion>
   5         <groupId>org.allowed.bitarus</groupId>
   6         <artifactId>ejbjee5</artifactId>
   7         <version>0.0.1</version>
   8         <packaging>ejb</packaging>
   9         <dependencies>
  10                 <dependency>
  11                         <groupId>javaee</groupId>
  12                         <artifactId>javaee-api</artifactId>
  13                         <version>5</version>
  14                         <scope>provided</scope>
  15                 </dependency>
  16         </dependencies>
  17         <build>
  18                 <sourceDirectory>src/main/java</sourceDirectory>
  19                 <plugins>
  20                         <plugin>
  21                                 <artifactId>maven-compiler-plugin</artifactId>
  22                                 <configuration>
  23                                         <source>1.5</source>
  24                                         <target>1.5</target>
  25                                 </configuration>
  26                         </plugin>
  27                 </plugins>
  28         </build>
  29 </project>
- ./SoapUI-5.5.0
- new soap project
- initial wsdl: http://127.0.0.1:8080/ejbjee5-0.0.1/ScheduleWS?wsdl 
Example WAR for JBoss5 in docker container
 
 
- mvn clean install
- cp /app/warjee5/target/warjee5-0.0.1.war /app/jboss-5.1.0.GA/server/default/deploy
src/main/java/org/allowed/bitarus/TestBean.java
   1 package org.allowed.bitarus;
   2 import java.util.logging.Logger;
   3 import java.util.logging.Level;
   4 
   5 public class TestBean{
   6     private String name;
   7     private Logger logger;
   8     
   9     public TestBean(){
  10         this.logger = Logger.getLogger(this.getClass().getName() );
  11         this.logger.log(Level.INFO,"Created test bean");
  12         this.name="Ioooo";
  13     }   
  14     
  15     public String getName(){
  16         this.logger.info("getName called");
  17         return this.name;        
  18     }
  19     
  20     public void setName(String name){
  21         this.name=name;        
  22     }
  23 }
src/main/java/org/allowed/bitarus/Handler.java
   1 package org.allowed.bitarus;
   2 
   3 import java.util.logging.Logger;
   4 import java.util.logging.Level;
   5 import javax.servlet.ServletRequest;
   6 import javax.servlet.ServletResponse;
   7 import javax.servlet.jsp.JspWriter;
   8 import javax.servlet.jsp.PageContext;
   9 
  10 public class Handler{
  11     private ServletRequest request;
  12     private ServletResponse response;
  13     private JspWriter out;
  14     
  15     public Handler(ServletRequest request, ServletResponse response,JspWriter out){
  16         this.request = request;
  17         this.response = response;        
  18         this.out = out;
  19     }
  20 
  21     public Handler(PageContext pageContext){
  22         this.request = pageContext.getRequest();
  23         this.response = pageContext.getResponse();        
  24         this.out = (JspWriter) pageContext.getAttribute(pageContext.OUT) ;
  25     }
  26     
  27     public void writeHandler(){
  28         try{
  29           this.out.println(String.format("<p>Handler up %s</p>" , this.request.getParameter("user") ));
  30         }
  31         catch(Exception ex){            
  32         }          
  33     }
  34     
  35     public void writeIP(){
  36         try{
  37             this.out.print("!!! Your IP address is " + this.request.getRemoteAddr());
  38         }
  39         catch(Exception ex){            
  40         }          
  41     }
  42         
  43 }
src/main/webapp/otherindex.jsp
   1 <%@page import="org.allowed.bitarus.Handler" %>
   2 <jsp:useBean id="test" class="org.allowed.bitarus.TestBean" />
   3 <% //Handler h = new Handler(request,response,out); %>
   4 <% Handler h = new Handler(pageContext); %>
   5 <html>
   6     <body>        
   7         <p>Other Hello</p>
   8         <p>World <jsp:getProperty name="test" property="name" /> </p>
   9         <% h.writeHandler(); %>
  10         <h2><% out.print("Your IP address is " + request.getRemoteAddr()); %></h2>
  11         <h3><% h.writeIP(); %></h3>
  12     </body>
  13 </html>
src/main/webapp/index.jsp
   1 <%@page import="org.allowed.bitarus.Handler" %>
   2 <jsp:useBean id="test" class="org.allowed.bitarus.TestBean" />
   3 <% //Handler h = new Handler(request,response,out); %>
   4 <% Handler h = new Handler(pageContext); %>
   5 <html>
   6     <body>        
   7         <p>Hello</p>
   8         <p>World <jsp:getProperty name="test" property="name" /> </p>
   9         <% h.writeHandler(); %>
  10         <h2><% out.print("Your IP address is " + request.getRemoteAddr()); %></h2>
  11         <h3><% h.writeIP(); %></h3>
  12     </body>
  13 </html>
src/main/webapp/WEB-INF/web.xml
   1 <?xml version="1.0"?>
   2 <web-app version="2.5"
   3    xmlns="http://java.sun.com/xml/ns/javaee"
   4    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   5    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
   6    <servlet>
   7         <servlet-name>index</servlet-name>
   8         <jsp-file>/index.jsp</jsp-file>
   9     </servlet>
  10     <servlet-mapping>
  11         <servlet-name>index</servlet-name>
  12         <url-pattern>/index**</url-pattern>
  13     </servlet-mapping>
  14 
  15    <servlet>
  16         <servlet-name>otherindex</servlet-name>
  17         <jsp-file>/otherindex.jsp</jsp-file>
  18     </servlet>
  19     <servlet-mapping>
  20         <servlet-name>otherindex</servlet-name>
  21         <url-pattern>/otherindex**</url-pattern>
  22     </servlet-mapping>
  23 
  24 </web-app>
pom.xml
   1 <project xmlns="http://maven.apache.org/POM/4.0.0"
   2         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   3         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   4         <modelVersion>4.0.0</modelVersion>
   5         <groupId>org.allowed.bitarus</groupId>
   6         <artifactId>warjee5</artifactId>
   7         <version>0.0.1</version>
   8         <packaging>war</packaging>
   9         <dependencies>
  10                 <dependency>
  11                         <groupId>javaee</groupId>
  12                         <artifactId>javaee-api</artifactId>
  13                         <version>5</version>
  14                         <scope>provided</scope>
  15                 </dependency>
  16         </dependencies>
  17         <build>
  18                 <sourceDirectory>src</sourceDirectory>
  19                 <plugins>
  20                         <plugin>
  21                                 <artifactId>maven-compiler-plugin</artifactId>
  22                                 <configuration>
  23                                         <source>1.5</source>
  24                                         <target>1.5</target>
  25                                 </configuration>
  26                         </plugin>
  27                 </plugins>
  28         </build>
  29 </project>
HyperSQL Database (HSQLDB)
HyperSQL is used for development, testing and deployment of database applications.
user: sa pwd: empty port: 1701 db path: /app/jboss-5.1.0.GA/server/default/data/hypersonic/localDB java -cp ./common/lib/hsqldb.jar org.hsqldb.util.SqlTool localDB #rcfile # vi /root/sqltool.rc urlid localDB url jdbc:hsqldb:/app/jboss-5.1.0.GA/server/default/data/hypersonic/localDB;shutdown=true username sa password /app/jboss-5.1.0.GA/server/default/data/hypersonic java -cp /app/jboss-5.1.0.GA/common/lib/hsqldb.jar org.hsqldb.util.SqlTool localDB \? \q # show tables \dt TABLE_SCHEM TABLE_NAME ----------- -------------- PUBLIC ADDENTITY sql> select * from addentity; ID CREATIONDATE OP1 OP2 RES -- ----------------------- --- --- --- 1 2020-06-20 15:05:29.037 1 7 8 2 2020-06-20 15:05:30.509 1 7 8 3 2020-06-20 15:05:31.137 1 7 8 4 2020-06-20 15:05:43.043 1 70 71 5 2020-06-20 15:09:01.0 299 1 300 6 2020-06-20 15:25:14.918 1 2 3 7 2020-06-20 15:25:42.434 10 20 30
EJB Jar with persistence
src/main/java/org/allowed/bitarus/AddEntity.java
   1 package org.allowed.bitarus;
   2 
   3 import java.util.Date;
   4 import javax.persistence.Id;
   5 import javax.persistence.Entity;
   6 import javax.persistence.Column;
   7 import javax.persistence.GeneratedValue;
   8 import javax.persistence.GenerationType;
   9 import javax.persistence.TemporalType;
  10 import javax.persistence.Temporal;
  11 
  12 @Entity
  13 public class AddEntity{
  14     @Id
  15     @GeneratedValue(strategy = GenerationType.IDENTITY) 
  16     private long id;
  17     @Column
  18     @Temporal(TemporalType.TIMESTAMP) 
  19     private Date creationDate;
  20     @Column
  21     private int op1;
  22     @Column
  23     private int op2;
  24     @Column
  25     private int res;
  26     
  27     public long getId(){return this.id;}
  28     public void setId(long id){ this.id=id;}
  29 
  30     public Date getCreationDate(){return this.creationDate;}
  31     public void setCreationDate(Date creationDate){ this.creationDate=creationDate;}
  32     
  33     public int getOp1(){return this.op1;}
  34     public void setOp1(int op1){ this.op1=op1;}        
  35 
  36 
  37     public int getOp2(){return this.op2;}
  38     public void setOp2(int op2){ this.op2=op2;}        
  39 
  40     public int getRes(){return this.res;}
  41     public void setRes(int res){ this.res=res;}        
  42 }
src/main/java/org/allowed/bitarus/AddLocal.java
src/main/java/org/allowed/bitarus/AddWS.java
   1 package org.allowed.bitarus;
   2 
   3 import javax.ejb.Stateless;
   4 import javax.jws.WebMethod;
   5 import javax.jws.WebService;
   6 import org.allowed.bitarus.AddRemote;
   7 import javax.persistence.PersistenceContext;
   8 import javax.persistence.EntityManager;
   9 import java.util.List;
  10 
  11 @Stateless
  12 @WebService
  13 public class AddWS implements AddRemote {
  14     @PersistenceContext(unitName="puDefaultDS")
  15     EntityManager em;
  16 
  17     @WebMethod
  18     public int add(int val1, int val2) {
  19         int res = val1 + val2;
  20         AddEntity me = new AddEntity();
  21         me.setRes(res);
  22         me.setOp1(val1);
  23         me.setOp2(val2);
  24         me.setCreationDate( new java.util.Date() );
  25         em.persist(me);
  26         return res;
  27     }
  28 
  29     @WebMethod
  30     public List<AddEntity> getAll(){
  31       return em.createQuery("select a from AddEntity a ").getResultList();
  32     }
  33 
  34 }
src/main/java/org/allowed/bitarus/AddRemote.java
src/main/resources/META-INF/ejb-jar.xml
   1 <ejb-jar xmlns="http://java.sun.com/xml/ns/javaee"
   2         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   3         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd"
   4         version="3.0">
   5         <enterprise-beans>
   6                 <session>
   7                         <ejb-name>AddWS</ejb-name>
   8                         <business-local>org.allowed.bitarus.AddLocal</business-local>
   9                         <business-remote>org.allowed.bitarus.AddRemote</business-remote>
  10                         <ejb-class>org.allowed.bitarus.AddWS</ejb-class>
  11                         <session-type>Stateless</session-type>
  12                         <transaction-type>Container</transaction-type>
  13                 </session>
  14         </enterprise-beans>
  15 </ejb-jar>
src/main/resources/META-INF/persistence.xml
   1 <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">
   2     <persistence-unit name="puDefaultDS" transaction-type="JTA">
   3         <jta-data-source>java:/DefaultDS</jta-data-source>
   4         <properties>
   5           <property name="hibernate.show_sql" value="true" />
   6           <property name="hibernate.format_sql" value="true" />
   7           <property name="hibernate.dialect" value="org.hibernate.dialect.HSQLDialect"/>
   8           <property name="hibernate.hbm2ddl.auto" value="update"/>
   9         </properties>
  10     </persistence-unit>
  11 </persistence>
pom.xml
   1 <project xmlns="http://maven.apache.org/POM/4.0.0"
   2         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   3         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   4         <modelVersion>4.0.0</modelVersion>
   5         <groupId>org.allowed.bitarus</groupId>
   6         <artifactId>ejbjee5</artifactId>
   7         <version>0.0.1</version>
   8         <packaging>ejb</packaging>
   9         <dependencies>
  10                 <dependency>
  11                         <groupId>javaee</groupId>
  12                         <artifactId>javaee-api</artifactId>
  13                         <version>5</version>
  14                         <scope>provided</scope>
  15                 </dependency>
  16         </dependencies>
  17         <build>
  18                 <sourceDirectory>src</sourceDirectory>
  19                 <plugins>
  20                         <plugin>
  21                                 <artifactId>maven-compiler-plugin</artifactId>
  22                                 <configuration>
  23                                         <source>1.5</source>
  24                                         <target>1.5</target>
  25                                 </configuration>
  26                         </plugin>
  27                 </plugins>
  28         </build>
  29 </project>
JNDIView
Show JNDI info. In kmx comsole chosse jboss, service=JNDIView, invoke list, Global JNDI Namespace
WAR web app that invokes ejb using JNDI name
- mvn clean install
- cp target/warjee5-0.0.1.war /app/jboss-5.1.0.GA/server/default/deploy/warjee5-0.0.1.war
pom.xml
   1 <project xmlns="http://maven.apache.org/POM/4.0.0"
   2         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   3         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   4         <modelVersion>4.0.0</modelVersion>
   5         <groupId>org.allowed.bitarus</groupId>
   6         <artifactId>warjee5</artifactId>
   7         <version>0.0.1</version>
   8         <packaging>war</packaging>
   9         <dependencies>
  10                 <dependency>
  11                         <groupId>javaee</groupId>
  12                         <artifactId>javaee-api</artifactId>
  13                         <version>5</version>
  14                         <scope>provided</scope>
  15                 </dependency>
  16                 <dependency>
  17                     <groupId>org.allowed.bitarus</groupId>
  18                     <artifactId>ejbjee5</artifactId>
  19                     <version>0.0.1</version>
  20                     <scope>provided</scope>
  21                 </dependency>
  22         </dependencies>
  23         <build>
  24                 <sourceDirectory>src</sourceDirectory>
  25                 <plugins>
  26                         <plugin>
  27                                 <artifactId>maven-compiler-plugin</artifactId>
  28                                 <configuration>
  29                                         <source>1.5</source>
  30                                         <target>1.5</target>
  31                                 </configuration>
  32                         </plugin>
  33                 </plugins>
  34         </build>
  35 </project>
src/main/java/org/allowed/bitarus/Handler.java
   1 package org.allowed.bitarus;
   2 
   3 import java.util.logging.Logger;
   4 import java.util.logging.Level;
   5 import javax.servlet.ServletRequest;
   6 import javax.servlet.ServletResponse;
   7 import javax.servlet.jsp.JspWriter;
   8 import javax.servlet.jsp.PageContext;
   9 import javax.naming.InitialContext;
  10 import java.util.List;
  11 import javax.naming.NamingEnumeration;
  12 import javax.naming.NameClassPair;
  13 
  14 public class Handler{
  15     private ServletRequest request;
  16     private ServletResponse response;
  17     private JspWriter out;
  18 
  19     public Handler(ServletRequest request, ServletResponse response,JspWriter out){
  20         this.request = request;
  21         this.response = response;        
  22         this.out = out;
  23     }
  24 
  25     public Handler(PageContext pageContext){
  26         this.request = pageContext.getRequest();
  27         this.response = pageContext.getResponse();        
  28         this.out = (JspWriter) pageContext.getAttribute(pageContext.OUT) ;
  29     }
  30     
  31     public void writeHandler(){
  32         try{
  33           this.out.println(String.format("<p>Handler up %s</p>" , this.request.getParameter("user") ));
  34         }
  35         catch(Exception ex){            
  36         }          
  37     }
  38     
  39     public void writeIP(){
  40         try{
  41             this.out.print("!!! Your IP address is " + this.request.getRemoteAddr());
  42         }
  43         catch(Exception ex){            
  44         }          
  45     }
  46  
  47    public void writeAddResults(){
  48       try{
  49           InitialContext context = new InitialContext();
  50           NamingEnumeration<NameClassPair> namingList = context.list("");
  51           while (namingList.hasMore()) {
  52               out.println(namingList.next().getName() + "<br/>" );
  53           }
  54 
  55           AddLocal addLocal = (AddLocal) context.lookup("AddWS/local");
  56           List<AddEntity> list = addLocal.getAll();
  57           for(int idx=0; idx<list.size(); idx++){
  58               this.out.println( list.get(idx).getCreationDate().toString() + "<br/>"  );
  59           }
  60       }
  61       catch(Exception ex){
  62       }
  63    }
  64 }
src/main/java/org/allowed/bitarus/TestBean.java
   1 package org.allowed.bitarus;
   2 import java.util.logging.Logger;
   3 import java.util.logging.Level;
   4 
   5 public class TestBean{
   6     private String name;
   7     private Logger logger;
   8     
   9     public TestBean(){
  10         this.logger = Logger.getLogger(this.getClass().getName() );
  11         this.logger.log(Level.INFO,"Created test bean");
  12         this.name="Ioooo";
  13     }   
  14     
  15     public String getName(){
  16         this.logger.info("getName called");
  17         return this.name;        
  18     }
  19     
  20     public void setName(String name){
  21         this.name=name;        
  22     }
  23 }
src/main/webapp/WEB-INF/web.xml
   1 <?xml version="1.0"?>
   2 <web-app version="2.5"
   3    xmlns="http://java.sun.com/xml/ns/javaee"
   4    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   5    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
   6    <servlet>
   7         <servlet-name>index</servlet-name>
   8         <jsp-file>/index.jsp</jsp-file>
   9     </servlet>
  10     <servlet-mapping>
  11         <servlet-name>index</servlet-name>
  12         <url-pattern>/index**</url-pattern>
  13     </servlet-mapping>
  14    <servlet>
  15         <servlet-name>otherindex</servlet-name>
  16         <jsp-file>/otherindex.jsp</jsp-file>
  17     </servlet>
  18     <servlet-mapping>
  19         <servlet-name>otherindex</servlet-name>
  20         <url-pattern>/otherindex**</url-pattern>
  21     </servlet-mapping>
  22 </web-app>
src/main/webapp/index.jsp
   1 <%@page import="org.allowed.bitarus.Handler" %>
   2 <jsp:useBean id="test" class="org.allowed.bitarus.TestBean" />
   3 <% //Handler h = new Handler(request,response,out); %>
   4 <% Handler h = new Handler(pageContext); %>
   5 <html>
   6     <body>        
   7         <p>Hello</p>
   8         <p>World <jsp:getProperty name="test" property="name" /> </p>
   9         <% h.writeHandler(); %>
  10         <h2><% out.print("Your IP address is " + request.getRemoteAddr()); %></h2>
  11         <h3><% h.writeIP(); %></h3>
  12         <h3><% h.writeAddResults(); %></h3>
  13     </body>
  14 </html>
src/main/webapp/otherindex.jsp
   1 <%@page import="org.allowed.bitarus.Handler" %>
   2 <jsp:useBean id="test" class="org.allowed.bitarus.TestBean" />
   3 <% //Handler h = new Handler(request,response,out); %>
   4 <% Handler h = new Handler(pageContext); %>
   5 <html>
   6     <body>        
   7         <p>Other Hello</p>
   8         <p>World <jsp:getProperty name="test" property="name" /> </p>
   9         <% h.writeHandler(); %>
  10         <h2><% out.print("Your IP address is " + request.getRemoteAddr()); %></h2>
  11         <h3><% h.writeIP(); %></h3>
  12     </body>
  13 </html>
Spring 3.0.1 in JBoss 5
pom.xml
   1 <?xml version="1.0" encoding="UTF-8"?>
   2 <project xmlns="http://maven.apache.org/POM/4.0.0" 
   3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   4     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
   5 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   6     <modelVersion>4.0.0</modelVersion>
   7     <groupId>org.allowed.bitarus</groupId>
   8     <artifactId>testSpringMVCJSP</artifactId>
   9     <version>0.1.0</version>
  10     <packaging>war</packaging>
  11     <dependencies>
  12                 <dependency>
  13                         <groupId>org.springframework</groupId>
  14                         <artifactId>spring-core</artifactId>
  15                         <version>3.0.1.RELEASE</version>
  16                 </dependency>
  17                 <dependency>
  18                         <groupId>org.springframework</groupId>
  19                         <artifactId>spring-web</artifactId>
  20                         <version>3.0.1.RELEASE</version>
  21                 </dependency> 
  22                 <dependency>
  23                         <groupId>org.springframework</groupId>
  24                         <artifactId>spring-webmvc</artifactId>
  25                         <version>3.0.1.RELEASE</version>
  26                 </dependency>
  27     </dependencies>
  28     <build>
  29         <sourceDirectory>src/main/java</sourceDirectory>
  30         <plugins>
  31            <plugin>
  32                 <artifactId>maven-compiler-plugin</artifactId>
  33                 <configuration>
  34                     <source>1.5</source>
  35                     <target>1.5</target>
  36                 </configuration>
  37             </plugin>
  38         </plugins>
  39     </build>
  40 </project>
src/main/java/org/allowed/bitarus/hello/HelloController.java
   1 package org.allowed.bitarus.hello;
   2 
   3 import org.springframework.stereotype.Controller;
   4 import org.springframework.ui.Model;
   5 import org.springframework.web.bind.annotation.RequestMapping;
   6 import org.springframework.web.bind.annotation.RequestParam;
   7 
   8 @Controller
   9 public class HelloController {
  10     @RequestMapping("/hello")
  11     public String hellox(@RequestParam(value="name", required=false,  defaultValue="World") String name, Model model) {
  12         model.addAttribute("name", name);
  13         return "greeting";
  14     }
  15 }
src/main/webapp/WEB-INF/mvc-dispatcher-servlet.xml
   1 <beans xmlns="http://www.springframework.org/schema/beans"
   2         xmlns:context="http://www.springframework.org/schema/context"
   3         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   4         xsi:schemaLocation="
   5         http://www.springframework.org/schema/beans     
   6         http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
   7         http://www.springframework.org/schema/context 
   8         http://www.springframework.org/schema/context/spring-context-3.0.xsd">
   9         <context:component-scan base-package="org.allowed.bitarus.hello" />
  10         <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  11                 <property name="prefix">
  12                         <value>/WEB-INF/pages/</value>
  13                 </property>
  14                 <property name="suffix">
  15                         <value>.jsp</value>
  16                 </property>
  17         </bean>
  18 </beans>
src/main/webapp/WEB-INF/pages/greeting.jsp
src/main/webapp/WEB-INF/web.xml
   1 <web-app id="WebApp_ID" version="2.4"
   2         xmlns="http://java.sun.com/xml/ns/j2ee" 
   3         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   4         xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
   5         http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
   6  
   7         <display-name>Spring MVC Application + JSP</display-name> 
   8         <servlet>
   9                 <servlet-name>mvc-dispatcher</servlet-name>
  10                 <servlet-class>
  11                        org.springframework.web.servlet.DispatcherServlet
  12                 </servlet-class>
  13                 <load-on-startup>1</load-on-startup>
  14         </servlet>
  15         <servlet-mapping>
  16                 <servlet-name>mvc-dispatcher</servlet-name>
  17                 <url-pattern>/</url-pattern>
  18         </servlet-mapping>
  19         <context-param>
  20                 <param-name>contextConfigLocation</param-name>
  21                 <param-value>/WEB-INF/mvc-dispatcher-servlet.xml</param-value>
  22         </context-param>
  23         <listener>
  24                 <listener-class>
  25                       org.springframework.web.context.ContextLoaderListener
  26                 </listener-class>
  27         </listener>
  28 </web-app>
EJB 3.0 Contacts, JPA
src/main/java/org/allowed/bitarus/ContactsLocal.java
   1 package org.allowed.bitarus;
   2 
   3 import javax.ejb.Local;
   4 import java.util.List;
   5 
   6 @Local
   7 public interface ContactsLocal {
   8     void add(String firstName, String lastName, String address, String phoneNumber);
   9     List<ContactEntity> getAll();
  10     ContactEntity get(long id);
  11     void remove(long id);
  12     void edit(long id, String firstName, String lastName, String address, String phoneNumber  );
  13 }
src/main/java/org/allowed/bitarus/ContactsWS.java
   1 package org.allowed.bitarus;
   2 
   3 import javax.ejb.Stateless;
   4 import javax.jws.WebMethod;
   5 import javax.jws.WebService;
   6 import org.allowed.bitarus.ContactsRemote;
   7 import javax.persistence.PersistenceContext;
   8 import javax.persistence.EntityManager;
   9 import java.util.List;
  10 import javax.persistence.NamedQuery;
  11 
  12 @Stateless
  13 @WebService
  14 public class ContactsWS implements ContactsRemote, ContactsLocal {
  15     @PersistenceContext(unitName="puContactsDefaultDS")
  16     EntityManager em;
  17 
  18     @WebMethod
  19     public void add(String firstName, String lastName, String address, String phoneNumber ) {
  20         ContactEntity c = new ContactEntity();
  21         c.setFirstName(firstName);
  22         c.setLastName(lastName);
  23         c.setAddress(address);
  24         c.setPhoneNumber(phoneNumber);
  25         c.setCreationDate( new java.util.Date() );
  26         em.persist(c);
  27     }
  28     
  29     @WebMethod
  30     public List<ContactEntity> getAll(){
  31       return em.createQuery("select a from ContactEntity a ").getResultList();
  32     }
  33 
  34     @WebMethod
  35     public ContactEntity get(long id){
  36       //return (ContactEntity) em.createQuery("select a from ContactEntity a where a.id = :id").setParameter("id", id).getSingleResult();
  37       return (ContactEntity) em.createNamedQuery("Contacts.byId").setParameter("id", id).getSingleResult();
  38     }
  39 
  40     @WebMethod
  41     public void remove(long id){
  42       ContactEntity ent = (ContactEntity) em.createNamedQuery("Contacts.byId").setParameter("id", id).getSingleResult();
  43       em.remove(ent);
  44     }
  45 
  46     @WebMethod
  47     public void edit(long id, String firstName, String lastName, String address, String phoneNumber  ){
  48       ContactEntity ent = (ContactEntity) em.createNamedQuery("Contacts.byId").setParameter("id", id).getSingleResult();
  49       ent.setFirstName(firstName);
  50       ent.setLastName(lastName);
  51       ent.setAddress(address);
  52       ent.setPhoneNumber(phoneNumber);
  53       em.persist(ent);
  54     }
  55 
  56 }
src/main/java/org/allowed/bitarus/ContactsRemote.java
   1 package org.allowed.bitarus;
   2 
   3 import javax.ejb.Remote;
   4 import java.util.List;
   5 
   6 @Remote
   7 public interface ContactsRemote {
   8     void add(String firstName, String lastName, String address, String phoneNumber);
   9     List<ContactEntity> getAll();
  10     ContactEntity get(long id);
  11     void remove(long id);
  12     void edit(long id, String firstName, String lastName, String address, String phoneNumber  );
  13 
  14 }
src/main/java/org/allowed/bitarus/ContactEntity.java
   1 package org.allowed.bitarus;
   2 
   3 import java.util.Date;
   4 import javax.persistence.Id;
   5 import javax.persistence.Entity;
   6 import javax.persistence.Column;
   7 import javax.persistence.GeneratedValue;
   8 import javax.persistence.GenerationType;
   9 import javax.persistence.TemporalType;
  10 import javax.persistence.Temporal;
  11 import javax.persistence.NamedQueries;
  12 import javax.persistence.NamedQuery;
  13 
  14 @Entity
  15 @NamedQueries( { @NamedQuery(name="Contacts.byId",query="select a from ContactEntity a where a.id = :id")   } )
  16 public class ContactEntity{
  17     @Id
  18     @GeneratedValue(strategy = GenerationType.IDENTITY) 
  19     private long id;
  20 
  21     @Column
  22     @Temporal(TemporalType.TIMESTAMP) 
  23     private Date creationDate;
  24 
  25     @Column
  26     private String firstName;
  27 
  28     @Column
  29     private String lastName;
  30 
  31     @Column
  32     private String address;
  33 
  34     @Column
  35     private String phoneNumber;
  36 
  37     public void setId(long id){this.id=id;}
  38     public long getId(){return this.id;}
  39 
  40     public void setCreationDate(Date creationDate){this.creationDate=creationDate;}
  41     public Date getCreationDate(){return this.creationDate;}
  42 
  43     public void setFirstName(String firstName){this.firstName=firstName;}
  44     public String getFirstName(){return this.firstName;}
  45 
  46     public void setLastName(String lastName){this.lastName=lastName;}
  47     public String  getLastName(){return this.lastName;}
  48 
  49     public void setAddress(String address){this.address=address;}
  50     public String getAddress(){return this.address;}
  51 
  52     public void setPhoneNumber(String phoneNumber){this.phoneNumber=phoneNumber;}
  53     public String getPhoneNumber(){return this.phoneNumber;}
  54 
  55 }
src/main/resources/META-INF/ejb-jar.xml
   1 <ejb-jar xmlns="http://java.sun.com/xml/ns/javaee"
   2         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   3         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd"
   4         version="3.0">
   5         <enterprise-beans>
   6                 <session>
   7                         <ejb-name>ContactsWS</ejb-name>
   8                         <business-local>org.allowed.bitarus.ContactsLocal</business-local>
   9                         <business-remote>org.allowed.bitarus.ContactsRemote</business-remote>
  10                         <ejb-class>org.allowed.bitarus.ContactsWS</ejb-class>
  11                         <session-type>Stateless</session-type>
  12                         <transaction-type>Container</transaction-type>
  13                 </session>
  14         </enterprise-beans>
  15 </ejb-jar>
src/main/resources/META-INF/persistence.xml
   1 <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">
   2     <persistence-unit name="puContactsDefaultDS" transaction-type="JTA">
   3         <jta-data-source>java:/DefaultDS</jta-data-source>
   4         <properties>
   5           <property name="hibernate.show_sql" value="true" />
   6           <property name="hibernate.format_sql" value="true" />
   7           <property name="hibernate.dialect" value="org.hibernate.dialect.HSQLDialect"/>
   8           <property name="hibernate.hbm2ddl.auto" value="update"/>
   9         </properties>
  10     </persistence-unit>
  11 </persistence>
pom.xml
   1 <project xmlns="http://maven.apache.org/POM/4.0.0"
   2         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   3         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
   4         <modelVersion>4.0.0</modelVersion>
   5         <groupId>org.allowed.bitarus</groupId>
   6         <artifactId>ejbcontacts</artifactId>
   7         <version>0.0.1</version>
   8         <packaging>ejb</packaging>
   9         <dependencies>
  10                 <dependency>
  11                         <groupId>javaee</groupId>
  12                         <artifactId>javaee-api</artifactId>
  13                         <version>5</version>
  14                         <scope>provided</scope>
  15                 </dependency>
  16         </dependencies>
  17         <build>
  18                 <sourceDirectory>src</sourceDirectory>
  19                 <plugins>
  20                         <plugin>
  21                                 <artifactId>maven-compiler-plugin</artifactId>
  22                                 <configuration>
  23                                         <source>1.5</source>
  24                                         <target>1.5</target>
  25                                 </configuration>
  26                         </plugin>
  27                 </plugins>
  28         </build>
  29 </project>
