Difference between revisions of "Glassfish"

Line 188: Line 188:
  
  
===Management and monitoring of OpenMQ===
+
===Management and monitoring of OpenMQ: imqadmin===
 
You can manage and monitor OpenMQ using the provided Glassfish '''imqadmin''' utility, available in $GLASSFISH.
 
You can manage and monitor OpenMQ using the provided Glassfish '''imqadmin''' utility, available in $GLASSFISH.
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
Line 211: Line 211:
  
 
you can then click the ‘Physical Destinations’ under your broker and the topic(s) / queue(s) created earlier will appear.
 
you can then click the ‘Physical Destinations’ under your broker and the topic(s) / queue(s) created earlier will appear.
 +
 +
 +
===Management of OpenMQ with ''QBrowser JMS''===
 +
 +
====Installation====
 +
* Download ''QBrowser MQ'' from the official website: http://sourceforge.net/projects/qbrowserv2/
 +
 +
* Just unzip the file in the target folder.
 +
 +
* Make the scripts executable
 +
<syntaxhighlight lang="bash">
 +
chmod 755 *.sh
 +
</syntaxhighlight>
 +
 +
====Connection to OpenMQ====
 +
 +
1.Execute run_open_mq
 +
<syntaxhighlight lang="bash">
 +
./run_open_mq.sh
 +
</syntaxhighlight>
 +
 +
2. Select [File] menu -> [New connection]
 +
 +
3. Specify credentials like that:
 +
 +
{| class="wikitable"
 +
|-
 +
! Setting !! Value
 +
|-
 +
| server || localhost
 +
|-
 +
| port || 7676
 +
|-
 +
| user || admin
 +
|-
 +
| password || admin
 +
|}
  
  

Revision as of 20:08, 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: imqadmin

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.


Management of OpenMQ with QBrowser JMS

Installation

  • Just unzip the file in the target folder.
  • Make the scripts executable
chmod 755 *.sh

Connection to OpenMQ

1.Execute run_open_mq

./run_open_mq.sh

2. Select [File] menu -> [New connection]

3. Specify credentials like that:

Setting Value
server localhost
port 7676
user admin
password admin


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