Difference between revisions of "Glassfish"

(Create Destination resource)
Line 170: Line 170:
  
 
Depending on your needs, you can choose either '''Topic''' or '''Queue'''.
 
Depending on your needs, you can choose either '''Topic''' or '''Queue'''.
 +
 +
 +
===Create JMS connection factory===
 +
* Under '''resources''' / JMS Resources, create a new '''Connection factories'''
 +
 +
 +
{| class="wikitable"
 +
|-
 +
! Setting !! Value
 +
|-
 +
| JDNI name || ''jms/''myApp''Factory''
 +
|-
 +
| resourceType || Depending on your destination:
 +
* '''javax.jms.topicConnectionFactory'''  for publish / subscribe pattern. 1 message go to N listeners, but order is NOT guarantee.   
 +
* '''javax.jms.queueConnectionFactory'''  end to end communication. 1 message go to 1 listener, order is guarantee.
 +
|}
 +
  
 
===Management and monitoring of OpenMQ===
 
===Management and monitoring of OpenMQ===
Line 176: Line 193:
 
$GLASSFISH/mq/bin/imqadmin
 
$GLASSFISH/mq/bin/imqadmin
 
</syntaxhighlight>
 
</syntaxhighlight>
 
  
 
====Add default broker====
 
====Add default broker====
Line 194: Line 210:
 
|}
 
|}
  
you can then click the ‘Physical Destinations’ under your broker and the testQueue created earlier will appear.
+
you can then click the ‘Physical Destinations’ under your broker and the topic(s) / queue(s) created earlier will appear.
  
  

Revision as of 11:54, 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.


Create JMS connection factory

  • Under resources / JMS Resources, create a new Connection factories


Setting Value
JDNI name jms/myAppFactory
resourceType Depending on your destination:
  • javax.jms.topicConnectionFactory for publish / subscribe pattern. 1 message go to N listeners, but order is NOT guarantee.
  • javax.jms.queueConnectionFactory end to end communication. 1 message go to 1 listener, order is guarantee.


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 topic(s) / queue(s) 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