Difference between revisions of "Glassfish"

Line 6: Line 6:
 
=Installation=
 
=Installation=
  
 +
==GF installation==
 
* Download the latest glassfish version from the official website: https://glassfish.java.net/
 
* Download the latest glassfish version from the official website: https://glassfish.java.net/
  
 
* Register the server into your IDE (Netbeans, Eclipse, IntelliJ).
 
* Register the server into your IDE (Netbeans, Eclipse, IntelliJ).
  
 +
==Firewall==
  
=Issues=
+
You need to open, at least, the following port in I/O:
  
==SocketPermission, port 1527==
+
<syntaxhighlight lang="bash">
 +
# 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
 +
</syntaxhighlight>
 +
 
 +
 
 +
==Issues==
 +
 
 +
===SocketPermission, port 1527===
 
If you have the following error:  
 
If you have the following error:  
 
''access denied ("java.net.SocketPermission" "localhost:1527" "listen,resolve")''
 
''access denied ("java.net.SocketPermission" "localhost:1527" "listen,resolve")''
Line 73: Line 90:
  
 
* Under '''resources''' / jdbc, create a new '''JDBC connection pool'''
 
* Under '''resources''' / jdbc, create a new '''JDBC connection pool'''
** Name:      myPoolName
+
 
** Type:      javax.sql.datasource
+
{| class="wikitable"
** Db vendorMySQL
+
|-
 +
! 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''
 
* On the next page, '''Datasource Classname''' must have been update automatically in: ''com.mysql.jdbc.jdbc2.optional.MysqlDataSource''
Line 119: Line 144:
  
 
==JMS==
 
==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/
 +
 +
 +
===Management and monitoring of OpenMQ===
 +
You can manage and monitor OpenMQ using the provided Glassfish '''imqadmin''' utility, available in $GLASSFISH.
 +
<syntaxhighlight lang="bash">
 +
$GLASSFISH/mq/bin/imqadmin
 +
</syntaxhighlight>
 +
 +
 +
====Add default broker====
 +
* Right-click on Brokers and Add…
 +
 +
{| class="wikitable"
 +
|-
 +
! 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===
 
===ActiveMQ===
Line 126: Line 185:
 
* The broker should listen on all interfaces
 
* The broker should listen on all interfaces
 
* Enable the web-console to improve debugging
 
* Enable the web-console to improve debugging
 +
see [[JMS server: ActiveMQ]]

Revision as of 11:28, 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/


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