| 
  
   Size: 6180 
  
  Comment:  
 | 
  
   Size: 9378 
  
  Comment:  
 | 
| Deletions are marked like this. | Additions are marked like this. | 
| Line 208: | Line 208: | 
== Glassfish OpenMQ standalone client == '''Structure''' {{{ . |-- pom.xml |-- src | `-- main | `-- java | `-- org | `-- allowed | `-- bitarus | `-- JmsClient.java }}} '''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>jmsclient</artifactId> <version>0.0.1</version> <packaging>jar</packaging> <dependencies> <dependency> <groupId>org.glassfish.mq</groupId> <artifactId>imq</artifactId> <version>5.1</version> </dependency> </dependencies> <build> <plugins> <plugin> <artifactId>maven-assembly-plugin</artifactId> <version>2.4</version> <configuration> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> <archive> <manifest> <mainClass>org.allowed.bitarus.JmsClient</mainClass> </manifest> </archive> </configuration> <executions> <execution> <id>make-assembly</id> <phase>package</phase> <goals> <goal>single</goal> </goals> </execution> </executions> </plugin> </plugins> </build> </project> }}} '''JmsClient.java''' {{{#!highlight java package org.allowed.bitarus; import com.sun.messaging.ConnectionConfiguration; import com.sun.messaging.ConnectionFactory; import com.sun.messaging.Queue; import javax.jms.Connection; import javax.jms.JMSException; import javax.jms.Message; import javax.jms.MessageProducer; import javax.jms.Session; public class JmsClient { public static void main( String[] args ) { try{ ConnectionFactory connFactory = new ConnectionFactory(); connFactory.setProperty(ConnectionConfiguration.imqAddressList, "127.0.0.1:7676"); Queue q = new Queue("Queuex"); // JNDI jms/queue physical dest name Queuex Connection connection = connFactory.createConnection(); Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); MessageProducer producer = session.createProducer(q); Message message = session.createTextMessage("Bitarus test message"); producer.send(message); System.out.println("After send message"); }catch(Exception ex){ ex.printStackTrace(); } System.out.println("End"); System.exit(0); } } }}}  | 
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 }
Glassfish OpenMQ standalone client
Structure
. |-- pom.xml |-- src | `-- main | `-- java | `-- org | `-- allowed | `-- bitarus | `-- JmsClient.java
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>jmsclient</artifactId>
    <version>0.0.1</version>
    <packaging>jar</packaging> 
    <dependencies>
        <dependency>
            <groupId>org.glassfish.mq</groupId>
            <artifactId>imq</artifactId>
            <version>5.1</version>
        </dependency>   
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <artifactId>maven-assembly-plugin</artifactId>
                <version>2.4</version>
                <configuration>
                    <descriptorRefs>
                        <descriptorRef>jar-with-dependencies</descriptorRef>
                    </descriptorRefs>
                    <archive>
                        <manifest>
                            <mainClass>org.allowed.bitarus.JmsClient</mainClass>
                        </manifest>
                    </archive>
                </configuration>
                <executions>
                    <execution>
                        <id>make-assembly</id> 
                        <phase>package</phase> 
                        <goals>
                            <goal>single</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>  
</project>JmsClient.java
   1 package org.allowed.bitarus;
   2 import com.sun.messaging.ConnectionConfiguration;
   3 import com.sun.messaging.ConnectionFactory;
   4 import com.sun.messaging.Queue;
   5 import javax.jms.Connection;
   6 import javax.jms.JMSException;
   7 import javax.jms.Message;
   8 import javax.jms.MessageProducer;
   9 import javax.jms.Session;
  10 
  11 public class JmsClient {
  12     
  13     public static void main( String[] args ) 
  14     {
  15         try{
  16             ConnectionFactory connFactory = new ConnectionFactory();
  17             connFactory.setProperty(ConnectionConfiguration.imqAddressList, "127.0.0.1:7676");
  18             Queue q = new Queue("Queuex"); // JNDI jms/queue physical dest name Queuex      
  19             Connection connection = connFactory.createConnection(); 
  20             Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); 
  21             MessageProducer producer = session.createProducer(q); 
  22             Message message = session.createTextMessage("Bitarus test message");
  23             producer.send(message);
  24             System.out.println("After send message");
  25         }catch(Exception ex){
  26             ex.printStackTrace();             
  27         }
  28         
  29         System.out.println("End");
  30         System.exit(0);
  31     }
  32 }
