Difference between revisions of "Glassfish"
Line 150: | Line 150: | ||
The OpenMQ server starts with Glassfish4, but you still have to configure it. | The OpenMQ server starts with Glassfish4, but you still have to configure it. | ||
For full explanation see: http://gregorbowie.wordpress.com/author/gregorbowie/ | For full explanation see: http://gregorbowie.wordpress.com/author/gregorbowie/ | ||
+ | |||
+ | ===Create Destination resource=== | ||
+ | * Go to Glassfish administrator page: http://localhost:4848 | ||
+ | |||
+ | * Under '''resources''' / JMS Resources, create a new '''destination Resources''' | ||
+ | |||
+ | {| class="wikitable" | ||
+ | |- | ||
+ | ! 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'''. | ||
+ | |||
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
- Download the latest glassfish version from the official website: https://glassfish.java.net/
- 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
- Download the latest MySQL JDBC driver from: https://dev.mysql.com/downloads/connector/j/
- 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
- Go to Glassfish administrator page: http://localhost:4848
- 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
- Go to Glassfish administrator page: http://localhost:4848
- 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