Difference between revisions of "Glassfish"

(Create Destination resource)
Line 165: Line 165:
 
|-
 
|-
 
| Type ||  
 
| Type ||  
| * '''javax.jms.topic'''  for publish / subscribe pattern. 1 message go to N listeners, but order is NOT guarantee.     
+
* '''javax.jms.topic'''  for publish / subscribe pattern. 1 message go to N listeners, but order is NOT guarantee.     
| * '''javax.jms.queue'''  end to end communication. 1 message go to 1 listener, order is guarantee.
+
* '''javax.jms.queue'''  end to end communication. 1 message go to 1 listener, order is guarantee.
 
|}
 
|}
  
 
Depending on your needs, you can choose either '''Topic''' or '''Queue'''.
 
Depending on your needs, you can choose either '''Topic''' or '''Queue'''.
 
 
  
 
===Management and monitoring of OpenMQ===
 
===Management and monitoring of OpenMQ===

Revision as of 11:46, 17 April 2014

Requirements

  • Glassfish 4 required Java 7. The version 4.0 is NOT compatible with Java 8, but the version 4.1 will be.
  • It's better to use the official ORACLE JDK as Glassfish is an Oracle product too.

Installation

GF installation

  • Register the server into your IDE (Netbeans, Eclipse, IntelliJ).

Firewall

You need to open, at least, the following port in I/O:

# Input
$IPTABLES -A INPUT -p tcp --dport 8080 -j ACCEPT   # Glassfish4 application server
$IPTABLES -A INPUT -p tcp --dport 1527 -j ACCEPT   # Glassfish4 security manager
$IPTABLES -A INPUT -p tcp --dport 7676 -j ACCEPT   # Open MQ (bundled with Glassfish) - JMS broker

# Output
$IPTABLES -A OUTPUT -p tcp --dport 8080 -j ACCEPT   # Glassfish4 application server
$IPTABLES -A OUTPUT -p tcp --dport 1527 -j ACCEPT   # Glassfish4 security manager
$IPTABLES -A OUTPUT -p tcp --dport 7676 -j ACCEPT   # Open MQ (bundled with Glassfish) - JMS broker


Issues

SocketPermission, port 1527

If you have the following error: access denied ("java.net.SocketPermission" "localhost:1527" "listen,resolve")

Then you have to adjust your security policy.

cd $JAVA_HOME/jre/lib/security
vim java.policy


  • Only open the required port

Add the following line:

grant {
    permission java.net.SocketPermission "localhost:1527", "listen";
};

=> just add the "permission..." around line 25


  • Open everything

This solution is NOT recommended, it can generate a massive security leak!

Anyway, if you're sure you can add the following line:

grant codeBase "file:${java.home}}/../db/lib/*" {
        permission java.security.AllPermission;
};


Datasource management

Database

MySQL

Requirements

You have to setup your MySQL server:

  • Allow remote access
  • Create dedicated database in UTF8-bin
  • Create dedicated user for the application

Driver installation

  • Extract and copy the mysql-connector-java-XXX-bin.jar into:
    • $GLASSFISH/glassfish/lib
    • $GLASSFISH/glassfish/domains/domain1/lib/databases
  • Restart Glassfish

Create JDBC connection pool

  • Under resources / jdbc, create a new JDBC connection pool
Setting Value
name myPoolName
Type javax.sql.datasource
Db vendor MySQL
  • On the next page, Datasource Classname must have been update automatically in: com.mysql.jdbc.jdbc2.optional.MysqlDataSource
  • Then, click the enable ping option and fill up the connection details.
Setting Value
User myApp
ServerName localhost
DatabaseName myApp
Password myAppPwd
Url jdbc:mysql://localhost:3306/myApp
URL jdbc:mysql://localhost:3306/myApp


Create JDBC resource

A JDBC resource = JNDI datasource

  • Under resources / jdbc, create a new JDBC resources
  • Create a new connection using:
Setting Value
JNDI name jdbc/myApp
Pool name myPoolName

Now you can use that connection in your application with jdbc/myApp


JMS

OpenMQ

Glassfish 4 is bundled with OpenMQ. This is the 1st Open-Source server to support JMS 2.0 specifications.

The OpenMQ server starts with Glassfish4, but you still have to configure it. For full explanation see: http://gregorbowie.wordpress.com/author/gregorbowie/

Create Destination resource

  • Under resources / JMS Resources, create a new destination Resources
Setting Value
JDNI name jms/myApp
physical destination name myApp
Type
  • javax.jms.topic for publish / subscribe pattern. 1 message go to N listeners, but order is NOT guarantee.
  • javax.jms.queue end to end communication. 1 message go to 1 listener, order is guarantee.

Depending on your needs, you can choose either Topic or Queue.

Management and monitoring of OpenMQ

You can manage and monitor OpenMQ using the provided Glassfish imqadmin utility, available in $GLASSFISH.

$GLASSFISH/mq/bin/imqadmin


Add default broker

  • Right-click on Brokers and Add…
Setting Value
server localhost
port 7676
user admin
password admin

you can then click the ‘Physical Destinations’ under your broker and the testQueue created earlier will appear.


ActiveMQ

Requirements

You have to setup your ActiveMQ server:

  • The broker should listen on all interfaces
  • Enable the web-console to improve debugging

see JMS server: ActiveMQ