VPS for Java Enterprise Application

Building and Deploying Java EE EAR with Maven to Java EE Application Server (Part 3) – Deployment To Glassfish 3.x

In Part 1 and Part 2 of this series, we have discussed about the directory layout and the Java EE demo project source codes that we had and further to be used to demonstrate the whole Java EE project development and deployment through Maven. From this part onwards, I will only be writing Application Server specific deployment configuration in Maven (using the contents from Part 1 and Part 2), at the same time, utilizing various plugins that are available. In this part, it is specifically about the deployment of the demo Java EE 5 project to Glassfish Ver 3.x Application Server. Again, for folks how came to this article directly, I would highly suggest that you read both Part 1 and Part 2 of this series to know what’s had been going on.


Warning On Compatibility:

The contents outlined in the article are NOT compatible with Glassfish 2.x.

Out of all the Java EE Application Servers, there is a reason why I would like to first address the Glassfish App Server deployment: Glassfish, though it had been made publicly available and had been widely used by many developers and companies; it lacks much support for Maven at the time this article was written, especially in the area of dependencies resolution and documentation in this aspect. The number of questions appeared in stackoverflow.com was quite overwhelming. Here, I will just document what worked for me and I believe the contents written here should be applicable to most of the development and deployment scenario for Glassfish 3.x.

Here, we will only be working on the manually installed standalone version of Glassfish and NOT the embedded version. I do understand that many developers had find the embedded version convenient for development and it has ts merits, but it is not the objective of this article as in my believe, it is better to run the codes with the version that always matches the version in the production environment as close as possible. At the date of writing, the Glassfish version used was 3.1.2.2.

Preparation

Glassfish 3.x Application Server Setup Brief

Let’s start with a brief explanation on how the App Server will be setup. Please do not be hasty to perform the below, we’ll go through this step-by-step:

  • We’ll create a separate domain call “DummyDemoDomain” just for this demo.
  • The database used as written in the previous parts is MySQL. You may please download the JDBC driver jar file for this demo.
  • The JDBC, JMS and other resources that is needed to be configured in the App Server will be placed in the glassfish-resources.xml file. We’ll go through this later.

Using & Configuring The Maven-Glassfish-Plugin

In order to deploy the EAR to the GLassfish 3.x App Server, we need the Maven-Glassfish-Plugin. This plugin might not be constantly maintained, but it is still usable. You may go to the plugin’s website and make a detail study of it, but anyway, here’s how to have the plugin configured with the very comprehensive config options which could be used in most deployment scenario. We’ll define the plugin in the DummyDemo-ear’s pom.xml file.

Please edit/replace the <path>/DummyDemoavaEE5/project/DummyDemo-ear/pom.xml to the below:

 XML |  copy code |? 
001
<?xml version="1.0" encoding="UTF-8"?>
002
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
003
 
004
    <!-- Basic Properties -->
005
    <modelVersion>4.0.0</modelVersion>
006
    <groupId>com.developerscrappad</groupId>
007
    <artifactId>DummyDemo-ear</artifactId>
008
    <version>1.0-SNAPSHOT</version>
009
    <name>DummyDemo-ear</name>
010
 
011
    <!-- The absolute path to the Glassfish Server, please change this... -->
012
    <properties>
013
        <glassfish.directory>C:/Java/glassfish-3.1.2.2</glassfish.directory>
014
    </properties>
015
 
016
    <!-- Reference the parent -->
017
    <parent>
018
        <artifactId>project</artifactId>
019
        <groupId>com.developerscrappad</groupId>
020
        <version>1.0-SNAPSHOT</version>
021
    </parent>
022
 
023
    <!-- The packaging value of any EAR module should be "ear" -->
024
    <packaging>ear</packaging>
025
 
026
    <!--
027
        The dependencies for EAR module should include all thoese sub-modules
028
        that are needed to be packaged into the ear file like the below...
029
    -->
030
    <dependencies>
031
        <dependency>
032
            <groupId>com.developerscrappad</groupId>
033
            <artifactId>DummyDemo-ejb</artifactId>
034
            <version>1.0-SNAPSHOT</version>
035
            <type>ejb</type>
036
        </dependency>
037
        <dependency>
038
            <groupId>com.developerscrappad</groupId>
039
            <artifactId>DummyDemo-web</artifactId>
040
            <version>1.0-SNAPSHOT</version>
041
            <type>war</type>
042
        </dependency>
043
        <dependency>
044
            <groupId>com.developerscrappad</groupId>
045
            <artifactId>DummyDemo-appclient</artifactId>
046
            <version>1.0-SNAPSHOT</version>
047
            <type>app-client</type>
048
        </dependency>
049
        <dependency>
050
            <groupId>com.developerscrappad</groupId>
051
            <artifactId>DummyDemo-api</artifactId>
052
            <version>1.0-SNAPSHOT</version>
053
            <type>jar</type>
054
        </dependency>
055
    </dependencies>
056
 
057
    <build>
058
        <plugins>
059
            <plugin>
060
                <groupId>org.apache.maven.plugins</groupId>
061
                <artifactId>maven-compiler-plugin</artifactId>
062
                <version>2.0.2</version>
063
                <configuration>
064
                    <source>1.5</source>
065
                    <target>1.5</target>
066
                </configuration>
067
            </plugin>
068
            <!--
069
                The ear plugin must include the definition for "modules",
070
                for any modules that are needed to be included in the EAR file,
071
                you need to specify them one by one, e.g. "ejbModule", "webModule",
072
                "jarModule" and "appClientModule".
073
            -->
074
            <plugin>
075
                <groupId>org.apache.maven.plugins</groupId>
076
                <artifactId>maven-ear-plugin</artifactId>
077
                <version>2.6</version>
078
                <configuration>
079
                    <version>5</version>
080
                    <defaultLibBundleDir>lib</defaultLibBundleDir>
081
                    <modules>
082
                        <ejbModule>
083
                            <groupId>com.developerscrappad</groupId>
084
                            <artifactId>DummyDemo-ejb</artifactId>
085
                        </ejbModule>
086
                        <webModule>
087
                            <groupId>com.developerscrappad</groupId>
088
                            <artifactId>DummyDemo-web</artifactId>
089
                            <context-root>/DummyDemo-web</context-root>
090
                        </webModule>
091
                        <jarModule>
092
                            <groupId>com.developerscrappad</groupId>
093
                            <artifactId>DummyDemo-api</artifactId>
094
                        </jarModule>
095
                        <appClientModule>
096
                            <groupId>com.developerscrappad</groupId>
097
                            <artifactId>DummyDemo-appclient</artifactId>
098
                        </appClientModule>
099
                    </modules>
100
                </configuration>
101
            </plugin>
102
 
103
            <!-- Glassfish App Server -->
104
            <plugin>
105
                <groupId>org.glassfish.maven.plugin</groupId>
106
                <artifactId>maven-glassfish-plugin</artifactId>
107
                <version>2.1</version>
108
                <executions>
109
                    <execution>
110
                        <id>gf-undeploy</id>
111
                        <goals>
112
                            <goal>undeploy</goal>
113
                        </goals>
114
                        <phase>clean</phase>
115
                    </execution>
116
                    <execution>
117
                        <id>gf-deploy</id>
118
                        <goals>
119
                            <goal>deploy</goal>
120
                        </goals>
121
                        <phase>package</phase>
122
                    </execution>
123
                </executions>
124
                <configuration>
125
                    <user>admin</user>
126
                    <glassfishDirectory>${glassfish.directory}</glassfishDirectory>
127
                    <domainDirectory>${glassfish.directory}/glassfish/domains/</domainDirectory>
128
                    <passwordFile>${basedir}/glassfishpasswordfile</passwordFile>
129
                    <domain>
130
                        <name>DummyDemoDomain</name>
131
                        <adminPort>4848</adminPort>
132
                        <httpPort>8080</httpPort>
133
                        <httpsPort>8443</httpsPort>
134
                    </domain>
135
                    <components>
136
                        <component>
137
                            <name>DummyDemo</name>
138
                            <artifact>target/DummyDemo-ear-1.0-SNAPSHOT.ear</artifact>
139
                        </component>
140
                    </components>
141
                </configuration>
142
            </plugin>
143
        </plugins>
144
    </build>
145
 
146
</project>

pom.xml Explained:
Looking at the new pom.xml, I have defined a property at the top called glassfish.directory, with the value that points to the absolute path of the Glassfish App Server directory. Please change this value accordingly. Moving down to the plugin section, both the gf-deploy and gf-undeploy plugin goals will only be executed during the package (I want to make it deployed to the application server just after packing everything to an EAR file) and the clean build cycle respectively.

As for the configuration section, there are many options to be configured, which you can find them at the plugin page, but as for now, the above is sufficient. However, do take note on a few options listed below:

OptionDescription
userThe user that could access to the Glassfish App Server, typically the admin. I have configured my Glassfish appserver’s administrator username as “admin“.
glassfishDirectoryThe absolute path to the Glassfish App Server directory. I’ll use the property ${glassfish.directory} defined above.
domainDirectoryThe directory that stores the domain specific files, typically will be located at “${glassfish.directory}/glassfish/domains“. Just change this accordingly.
passwordFileThe absolute path to the Glassfish password file. The contents within the password file is shown below as you read on. I choose to use the password file as it could have the master password defined, which is crucial for domain creation.
domain -> nameThe domain name that is used for domain creation, running and deployment.
components -> component -> nameThe preferred name of the deployed application
components -> component -> artifactThe absolute or relative path to the EAR file that is needed to be deployed.

The options of the ports are self explainable. So, basically, this is what the plugin section should look like.

The Glassfish Password File

The Glassfish Password File is necessary for this deployment (if not, compulsory), as it allow the storing of the master password. At the time of writing, I have tried doing this without the password file, but the plugin complained about the missing master password and it couldn’t move on. On my side, I had great difficulty in feeding the master password to the plugin through normal means. But unfortunately the only way the plugin could work correctly is by the use of password file with a master password defined. Bugs bugs bugs…

Anyway, the below are the contents of the password file. Please create a the file with the contents below:

<path>/DummyDemoJavaEE5/project/DummyDemo-ear/glassfishpasswordfile

Contents of glassfishpasswordfile:

 Text |  copy code |? 
1
AS_MASTER_PASSWORD=masterpasswd
2
AS_ADMIN_PASSWORD=adminpasswd
3
AS_ADMIN_USERPASSWORD=userpasswd

The above are the passwords used in this demo. You may change them accordingly.

The Glassfish Resources File

The good thing about Glassfish is it allows you to add the necessary app server resources through loading/parsing an XML file, instead of configuring the resources through the admin console. The resources used are shown below. Please create the glassfish-resources.xml file at the below path and write the contents below into the file:

<path>/DummyDemoJavaEE5/project/DummyDemo-ear/glassfish-resources.xml

Contents of glassfish-resources.xml:

 XML |  copy code |? 
01
<?xml version="1.0" encoding="UTF-8"?>
02
<!DOCTYPE resources PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Resource Definitions//EN" "http://glassfish.org/dtds/glassfish-resources_1_5.dtd">
03
<resources>
04
    <!-- JDBC Stuff -->
05
    <jdbc-connection-pool name="DummyDemoPool" res-type="javax.sql.DataSource"
06
                          datasource-classname="com.mysql.jdbc.jdbc2.optional.MysqlDataSource"
07
                          ping="true" steady-pool-size="8" pool-resize-quantity="2" max-pool-size="32" 
08
                          idle-timeout-in-seconds="600" max-wait-time-in-millis="6000"
09
                          statement-timeout-in-seconds="60">
10
        <property name="User" value="root" />
11
        <property name="ServerName" value="localhost" />
12
        <property name="Port" value="3306" />
13
        <property name="DatabaseName" value="DUMMY_DEMO_DB" />
14
        <property name="Password" value="dbpassword" />
15
        <property name="AutoReconnect" value="true" />
16
        <property name="URL" value="jdbc:mysql://localhost:3306/DUMMY_DEMO_DB" />
17
    </jdbc-connection-pool>
18
    <jdbc-resource jndi-name="jndi/DummyDemoMySQLDB" pool-name="DummyDemoPool" />
19
 
20
    <!-- JMS/MDB Stuff -->
21
    <admin-object-resource enabled="true" jndi-name="jms/TestQueue"  res-type="javax.jms.Queue"  res-adapter="jmsra">
22
        <property name="Name" value="PhysicalQueue"/>
23
    </admin-object-resource>
24
    <connector-connection-pool name="TestQueueConnectionFactoryPool"  connection-definition-name="javax.jms.QueueConnectionFactory"  resource-adapter-name="jmsra" />
25
    <connector-resource enabled="true" jndi-name="jms/TestQueueConnectionFactory" pool-name="TestQueueConnectionFactoryPool"  />
26
</resources>

glassfish-resources.xml Explained:
In the glassfish-resources.xml, I have just defined the database connection, the Queue and the Queue Connection Factory, which is sufficient for the demo application. The database connectivity parameters are at the <jdbc-connection-pool /> section. Please change the property values accordingly. The Queue and Queue Connection Factory are both defined in the <onnector-connection-pool /> and the <admin-object-resource /> section. Please take note of the JNDI name, it must match the annotation in the MDB and vice-versa.

The Right Dependency For Integration Test

Before we go ahead with the deployment and integration test, since we are running the app on Glassfish, there are a few tweaks to the dependency used in the integration-test module as published in Part 2 of the series.

Many developers had faced issues with getting the right dependency working with Glassfish for their JMS, naming context environment, etc. and sad to say, there ain’t “component-ized” or “nice and lean” Maven artifacts/dependencies available for the Glassfish environment. Some developers have to manually insert the imqbroker.jar or the imqjmsra.jar taken from Glassfish to Maven’s Repository as an artifact, just to get things working.

In my opinion, there is no right or wrong way to this. But for conveniences sake, I’ll just use glassfish-embedded-all Maven dependency as a library for the integration test codes for the integration-test module. You may insert this in the <path>/DummyDemoJavaEE5/integration-test/pom.xml file (the file size is more than 60MB):

 XML |  copy code |? 
01
<dependencies>
02
...
03
    <dependency>
04
        <groupId>org.glassfish.extras</groupId>
05
        <artifactId>glassfish-embedded-all</artifactId>
06
        <version>3.1.1</version>
07
        <scope>test</scope>
08
    </dependency>
09
...
10
</dependencies>

You’ve seen it correctly. It is the Embedded Glassfish’s Library that could solve much of the dependency hassle. This is by far, the most painless approach that I could have right now. A word of caution, please do check on the compatibility of this dependency version against the actual development or production Glassfish Application Server in any future usage of this.

The contents of <path>/DummyDemoJavaEE5/integration-test/pom.xml should be like the below:

 XML |  copy code |? 
01
<?xml version="1.0"?>
02
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
03
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
04
 
05
    <!-- Basic Properties -->
06
    <modelVersion>4.0.0</modelVersion>
07
    <groupId>com.developerscrappad</groupId>
08
    <artifactId>integration-test</artifactId>
09
    <version>1.0-SNAPSHOT</version>
10
    <name>integration-test</name>
11
 
12
    <!-- Reference the parent -->
13
    <parent>
14
        <groupId>com.developerscrappad</groupId>
15
        <artifactId>DummyDemoJavaEE5</artifactId>
16
        <version>1.0-SNAPSHOT</version>
17
    </parent>
18
 
19
    <!-- Define the necessary dependencies for running the integration test -->
20
    <dependencies>
21
        <dependency>
22
            <groupId>org.glassfish.extras</groupId>
23
            <artifactId>glassfish-embedded-all</artifactId>
24
            <version>3.1.1</version>
25
            <scope>test</scope>
26
        </dependency>
27
        <dependency>
28
            <groupId>com.developerscrappad</groupId>
29
            <artifactId>DummyDemo-ejb</artifactId>
30
            <version>1.0-SNAPSHOT</version>
31
            <type>ejb</type>
32
            <scope>test</scope>
33
        </dependency>
34
    </dependencies>
35
 
36
    <build>
37
        <plugins>
38
            <!--
39
                Sine this is an integration test module, the Failsafe plugin is now use.
40
                It will only pickup the integration files from the **/itest/ directory
41
                when running the integration-test. Please do not confuse this with unit test.
42
            -->
43
            <plugin>
44
                <groupId>org.apache.maven.plugins</groupId>
45
                <artifactId>maven-failsafe-plugin</artifactId>
46
                <version>2.12.4</version>
47
                <executions>
48
                    <execution>
49
                        <id>failsafe1</id>
50
                        <goals>
51
                            <goal>integration-test</goal>
52
                        </goals>
53
                        <phase>integration-test</phase>
54
                    </execution>
55
                    <execution>
56
                        <id>failsafe2</id>
57
                        <goals>
58
                            <goal>verify</goal>
59
                        </goals>
60
                        <phase>verify</phase>
61
                    </execution>
62
                </executions>
63
                <configuration>
64
                    <includes>
65
                        <include>**/itest/*.java</include>
66
                    </includes>
67
                </configuration>
68
            </plugin>
69
 
70
            <!--
71
                The surefire plugin is for unit testing purposes.
72
                For unit test, it will only pickup files within the **/utest/ directory.
73
                So, make sure you know where to place your unit test java files.
74
            -->
75
            <plugin>
76
                <groupId>org.apache.maven.plugins</groupId>
77
                <artifactId>maven-surefire-plugin</artifactId>
78
                <version>2.12.4</version>
79
                <executions>
80
                    <execution>
81
                        <id>sf1</id>
82
                        <goals>
83
                            <goal>test</goal>
84
                        </goals>
85
                        <phase>test</phase>
86
                    </execution>
87
                </executions>
88
                <configuration>
89
                    <includes>
90
                        <include>**/utest/*.java</include>
91
                    </includes>
92
                </configuration>
93
            </plugin>
94
        </plugins>
95
    </build>
96
</project>

Making Things Happen Step-By-Step

Once you’ve gotten all of the above configured, it is time to put the plugin in good use. We’ll perform steps listed below.

Step 1: Creating the Domain in Glassfish through Maven-Glassfish-Plugin (DummyDemoDomain)

The DummyDemo project will run on a new domain call DummyDemoDomain. To create the domain, just follow the steps below (you may need to open two or more terminal/command prompt, depending on your style of approach):

  1. Change the working directory to <path>/DummyDemoJavaEE5/project/DummyDemo-ear/.
  2. Execute the command: “mvn glassfish:create-domain” and wait for Maven to do its job.
  3. Once the domain was created, remember to place the JDBC driver jar file into the <path_to_glassfish>/glassfish/domains/DummyDemoDomain/lib/ext/ directory. This is crucial before you start the App Server later.

Step 2: Starting the DummyDemoDomain

To start the newly created domain, follow the below:

  • While still at the working directory of <path>/DummyDemoJavaEE5/project/DummyDemo-ear/, execute the command “mvn glassfish:start-domain“. This will start the DummyDemoDomain.

Step 3: Add Resources to the DummyDemoDomain

This is the time to use the glassfish-resources.xml that you have prepared earlier. To have the resources added into Glassfish:

  1. Change the working directory to <path_to_glassfish>/bin/.
  2. Execute the following command:
    asadmin add-resources "<path>/DummyDemoJavaEE5/project/DummyDemo-ear/glassfish-resources.xml"
    

    It will ask you for the administrator’s password, just type the password to proceed.
  3. When the resources were added, it will show you something like:
    ...
    Command : JDBC connection pool DummyDemoPool created successfully.
    Command : JDBC resource jndi/DummyDemoMySQLDB created successfully.
    Command : Connector connection pool TestQueueConnectionFactoryPool created.
    Command : Administered object jms/TestQueue created.
    Command : Connector resource jms/TestQueueConnectionFactory created.
    Command add-resources executed successfully.
    ...

Step 4: Deploying the EAR File to the Glassfish Application Server

This is a very “sensitive” step and the failure rate is usually high. If anything goes wrong, I would highly suggest that you revisit Step 1 to Step 4 or back track Part 1 and Part 2 of the series. Anyway, to deploy the EAR file, follow the steps below:

Full Deployment Including Running The Integration Test

  1. Please change the working directory to <path>/DummyDemoJavaEE5/.
  2. Execute the “mvn install” command. This command will start the Glassfish domain (if it is not started) and it will deploy the EAR to the application server, and then, it will run the integration tests within the integration-test module.
  3. Just wait for Maven to download the dependencies through the internet. But if things broke down due to network failure or if you have difficult resolving dependencies, I’ll use the “-U” flag to perform this again, e.g. “mvn install -U
  4. If it deploys properly, you should be able to see the below in the terminal:
    ...
    [INFO] Reactor Summary:
    [INFO]
    [INFO] DummyDemoJavaEE5 .................................. SUCCESS [0.233s]
    [INFO] project ........................................... SUCCESS [0.016s]
    [INFO] DummyDemo-api ..................................... SUCCESS [2.436s]
    [INFO] DummyDemo-ejb ..................................... SUCCESS [1.683s]
    [INFO] DummyDemo-web ..................................... SUCCESS [1.043s]
    [INFO] DummyDemo-appclient ............................... SUCCESS [1.674s]
    [INFO] DummyDemo-ear ..................................... SUCCESS [5.131s]
    [INFO] integration-test .................................. SUCCESS [19.942s]
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    ...

If you have successfully completed this step, CONGRATULATIONS, your EAR file had been deployed! You may access the admin console of Glassfish to check on the deployment status.

For Development Deployment (Without Running The Integration Test)

During development, we don’t need to always run the integration test for every single deployment, to achieve this while at your development with the Glassfish running, just perform the following:

  1. Change the working directory to <path>/DummyDemoJavaEE5/project/.
  2. For first time deployment of the EAR, just execute the command “mvn package” or “mvn install“.

Step 5: How to Undeploy or Redeploy the EAR to Glassfish

In the midst of development, there will always be time when we need to redeploy the application again and again. To do that, just execute this at the <path>/DummyDemoJavaEE5/project/ working directory:

To UN-DEPLOY:
Just use the command: “mvn clean“. Since the the “undeploy” plugin goal was tagged with “clean” build-phase (just check on <path>/DummyDemoJavaEE5/project/DummyDemo-ear/pom.xml), when ever you execute the “clean” build cycle, it will perform the undeployment.

** Please take note that this command will fail if there is nothing to be undeploy on the Glassfish App Server.

To RE-DEPLOY (only when there is an existing deployment in the Glassfish app server):
Execute “mvn clean install” or “mvn clean package” at the terminal.

Summary For Part 3

I sincerely hope that after reading Part 1, Part 2 and Part 3 of this series, you are able to get your project deploy and tested successfully to Glassfish with Maven. In fact, getting the deployment done right is not much of a hassle, but rather getting the integration test module dependencies right is quite a challenge for developers whom had tried. Dependencies are not quite available in the general public Maven Repositories. I’m guessing that it might be due to licensing issues from Oracle or they are just simply lacking of staff to maintain the Maven side of things for Glassfish.

To Be Continue…

From here, I’ll be posting more of the deployment configuration for other Application Servers. JBoss and WebLogic will be next couple of articles, so stay tune.

Proceed To Part 4:

Building and Deploying Java EE EAR with Maven to Java EE Application Server (Part 4) – Deployment To JBoss AS 5.x & JBoss AS 6.x

Related Articles:

Max Lam

Born and currently resides in Malaysia, a seasoned Java developer whom had held positions as Senior Developer, Consultant and Technical Architect in various enterprise software development companies.

Facebook Twitter LinkedIn Google+ 

Enterprise Web UI
Oracle Certified Java Exam Simulator | Practice Exam

Previous Posts

Quick Note: Unable To Perform LDAP Wildcard “*” Search On Windows Active Directory

Quick Note: Unable To Perform LDAP Wildcard "*" Search On Windows Active Directory

October 9th, 2012

In case you are searching high and low for a solution or an answer to why Windows Active Directory d[...]

Java JNDI/LDAP: Windows Active Directory Authentication, Organizational Unit, Group & Other Information Access

Java JNDI/LDAP: Windows Active Directory Authentication, Organizational Unit, Group & Other Information Access

October 4th, 2012

In today's IT environment, most mid-size corporation and above will have some form of centralized em[...]

MySQL Cluster NDB 7.2 on Solaris 10 Part 3 – Testing The Cluster

MySQL Cluster NDB 7.2 on Solaris 10 Part 3 - Testing The Cluster

September 22nd, 2012

We are back again to have fun with our cluster that we've setup written in our previous articles on [...]

MySQL Cluster NDB 7.2 on Solaris 10 Part 2 – Starting, Distributed Synchronized Users Management And Stopping The Cluster

MySQL Cluster NDB 7.2 on Solaris 10 Part 2 - Starting, Distributed Synchronized Users Management And Stopping The Cluster

September 18th, 2012

This is the continuation from the previous part of the tutorial MySQL Cluster NDB 7.2 on Solaris 10 [...]

MySQL Cluster NDB 7.2 on Solaris 10 Part 1 – How To Install, Setup and Configure

MySQL Cluster NDB 7.2 on Solaris 10 Part 1 - How To Install, Setup and Configure

September 18th, 2012

If you have landed on this page, we believe you might either had a bumpy ride in getting the MySQL c[...]

Quick Fix: How to Solve “Unable to read the logging configuration” on Netbeans7 with JBoss6

Quick Fix: How to Solve "Unable to read the logging configuration" on Netbeans7 with JBoss6

September 8th, 2012

This is just a quick fix post for those whom are having this problem when running JBoss 6.x with Net[...]

Making sense of EJB3.x Transaction Attributes – Part 4 (NEVER)

Making sense of EJB3.x Transaction Attributes – Part 4 (NEVER)

September 5th, 2012

This is the last part in the series of "Making sense of EJB3.x Transaction Attributes". So far, we'v[...]

Making sense of EJB3.x Transaction Attributes – Part 3 (Difference Between SUPPORTS and NOT_SUPPORTED)

Making sense of EJB3.x Transaction Attributes – Part 3 (Difference Between SUPPORTS and NOT_SUPPORTED)

September 5th, 2012

Oracle had extensively documented the behavior of each transaction attributes in the Java EE documen[...]

Making sense of EJB3.x Transaction Attributes – Part 2 (MANDATORY)

Making sense of EJB3.x Transaction Attributes - Part 2 (MANDATORY)

April 17th, 2012

In my previous post, we've discussed about TransactionAttributeType.REQUIRES_NEW: how it behaves and[...]

swiftype.com The easiest and greatest way of adding a search on your web site