JEE
Java Platform, Enterprise Edition
JEE 7 Tutorial
https://docs.oracle.com/javaee/7/tutorial/index.html
Key features: https://blogs.oracle.com/arungupta/entry/java_ee_7_key_features
Reference implementation: https://glassfish.java.net/getstarted.html
Java EE7 APIs: https://docs.oracle.com/javaee/7/tutorial/overview007.htm
Install Glassfish 4.1
https://glassfish.java.net/download.html
JDK 8 u20 or above is recommended for GlassFish 4.1.
- cd /tmp
wget http://download.oracle.com/otn-pub/java/jdk/8u25-b17/jdk-8u25-linux-x64.tar.gz
wget http://dlc.sun.com.edgesuite.net/glassfish/4.1/release/glassfish-4.1.zip
- unzip glassfish-4.1.zip
- tar xvzf jdk-8u25-linux-x64.tar.gz
- mv jdk1.8.0_25/ /usr/java
- mv glassfish4/ /opt/appsrv/
- cd /usr/java/jdk1.8.0_25
- chmod 555 * -R
- /usr/java/jdk1.8.0_25/bin/java -version
- cd /opt/appsrv/glassfish4/bin
- JAVA_HOME=/usr/java/jdk1.8.0_25 AS_JAVA=/usr/java/jdk1.8.0_25 asadmin start-domain
- asadmin change-admin-password
- asadmin enable-secure-admin
- asadmin stop-domain
- asadmin start-domain
Docker Ubuntu image install
- docker pull ubuntu
- docker create --name containerx -p 1022:22 -p 1848:4848 -p 1080:8080 ubuntu
- docker start containerx
- docker exec -t -i containerx
- apt-get update
- apt-get install tzdata-java openjdk-7-jdk wget unzip
- java
- java -version
- apt-get install
- cd /tmp
wget http://dlc.sun.com.edgesuite.net/glassfish/4.1/release/glassfish-4.1.zip
- unzip glassfish-4.1.zip
- mkdir -p /opt/appsrv
- mv glassfish4/ /opt/appsrv/
- cd /opt/appsrv/glassfish4/
- bin/asadmin start-domain
- bin/asadmin change-admin-password
- bin/asadmin enable-secure-admin
- bin/asadmin stop-domain
- bin/asadmin start-domain
- exit
https://github.com/sebsto/docker-glassfish4/blob/master/Dockerfile
JEE6 EJB 3.1 sample for Glassfish 3.1.2.2 and JBoss 7.1.1
Structure:
. |-- pom.xml |-- src | `-- main | |-- java | | `-- org | | `-- allowed | | `-- bitarus | | |-- ScheduleRemote.java | | |-- ScheduleWS.java | | `-- Scheduler.java | `-- resources | `-- META-INF | `-- ejb-jar.xml
pom.xml
1 <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">
2 <modelVersion>4.0.0</modelVersion>
3 <groupId>org.allowed.bitarus</groupId>
4 <artifactId>ejbjee6</artifactId>
5 <version>0.0.1</version>
6 <packaging>ejb</packaging>
7 <dependencies>
8 <dependency>
9 <groupId>javax</groupId>
10 <artifactId>javaee-api</artifactId>
11 <version>6.0</version>
12 <scope>provided</scope>
13 </dependency>
14 </dependencies>
15 </project>
16 <!--
17 mkdir -p src/main/java/org/allowed/bitarus
18 touch src/main/java/org/allowed/bitarus/Scheduler.java
19 touch src/main/java/org/allowed/bitarus/ScheduleRemote.java
20 touch src/main/java/org/allowed/bitarus/ScheduleWS.java
21 mkdir -p src/main/resources/META-INF
22 touch src/main/resources/META-INF/ejb-jar.xml
23 mvn clean compile package
24 # Tested in GlassFish Server Open Source Edition 3.1.2.2 (build 5)
25 -->
ejb-jar.xml
Scheduler.java
1 package org.allowed.bitarus;
2 import javax.ejb.Singleton;
3 import javax.ejb.Schedule;
4 import javax.ejb.ScheduleExpression;
5 import javax.annotation.Resource;
6 import javax.ejb.Timeout;
7 import javax.ejb.TimerConfig;
8 import javax.ejb.TimerService;
9 import javax.ejb.Timer;
10 import javax.annotation.PostConstruct;
11 import javax.ejb.Startup;
12 @Singleton
13 @Startup
14 public class Scheduler {
15 @Resource
16 private TimerService timerService;
17
18 @PostConstruct
19 private void postConstruct() {
20 TimerConfig config = new TimerConfig("OneMinutePassed", false);
21 ScheduleExpression se = new ScheduleExpression();
22 se.minute("*");
23 se.hour("*");
24 timerService.createCalendarTimer(se, config);
25 }
26
27 public String addSchedule(String second,String minute,String hour,String info){
28 TimerConfig config = new TimerConfig(info, false);
29 ScheduleExpression se = new ScheduleExpression();
30 se.second(second);
31 se.minute(minute);
32 se.hour(hour);
33 timerService.createCalendarTimer(se, config);
34 return "Added " + info;
35 }
36
37 @Schedule(minute="*/5", hour="*")
38 private void eachFiveMinutes(){
39 System.out.println("Called each five minute");
40 }
41
42 @Timeout
43 public void timeout(Timer timer) {
44 if ("OneMinutePassed".equals(timer.getInfo())) {
45 System.out.println("OneMinutePassed !!!");
46 /*for(Timer t : timerService.getTimers() ){
47 System.out.println(">>> "+ t.getInfo() );
48 }*/
49 }else{
50 System.out.println("!!! "+ timer.getInfo() );
51 }
52 }
53 }
ScheduleRemote.java
ScheduleWS.java
1 package org.allowed.bitarus;
2 import javax.ejb.Stateless;
3 import javax.jws.WebMethod;
4 import javax.jws.WebService;
5 import javax.ejb.ScheduleExpression;
6 import javax.annotation.Resource;
7 import javax.ejb.TimerService;
8 import javax.ejb.TimerConfig;
9 import javax.ejb.EJB;
10 @Stateless
11 @WebService
12 public class ScheduleWS implements ScheduleRemote{
13 @Resource
14 private TimerService timerService;
15 @EJB
16 Scheduler sc;
17
18 @WebMethod
19 public String addSchedule(String second,String minute,String hour,String info){
20 return sc.addSchedule(second, minute, hour, info);
21 }
22 }