JEE6 : Dukes Forest Tutorial : Part 3

Once MySql database was setup and appropriate jdbc-connection-pool information was set-up (Refer to Part 2), I did run into a JAAS exception. When I started the application, it would start up fine, but when i tried to log in, using any of the users setup, it would show me the following stack-trace:

WARNING: WEB9102: Web Login Failed: com.sun.enterprise.security.auth.login.common.LoginException: Login failed: Failed file 
login for [email protected]
SEVERE: javax.servlet.ServletException: Exception thrown while attempting to authenticate for user: [email protected]
at org.apache.catalina.connector.Request.login(Request.java:1969)
at org.apache.catalina.connector.Request.login(Request.java:1900)
at org.apache.catalina.connector.RequestFacade.login(RequestFacade.java:1146)
at com.forest.web.UserController.login(UserController.java:63)
at com.forest.web.UserController$Proxy$_$$_WeldClientProxy.login(UserController$Proxy$_$$_WeldClientProxy.java)
at sun.reflect.GeneratedMethodAccessor253.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at com.sun.el.parser.AstValue.invoke(AstValue.java:254)
at com.sun.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:302)
at org.jboss.weld.util.el.ForwardingMethodExpression.invoke(ForwardingMethodExpression.java:39)
at org.jboss.weld.el.WeldMethodExpression.invoke(WeldMethodExpression.java:50)
....
....

Debugging this issue, I found that I had not created a Security Realm in the glassfish domain. Oracles’ documentation for this tutorial is excellent and found the following link that tells you exactly how to set up the security realm.
http://docs.oracle.com/javaee/6/tutorial/doc/glnqp.html#glxaq

You could create the Security Realm via the glassfish admin application. But creating the realm using Ant as explained in the above link is the easiest way of doing it.

Read More

JEE6 : Dukes Forest Tutorial : Part 2

Out of the box, Dukes Forest tutorial is setup to use Java Derby as the database.

In order to use a different database, other than Derby, you will have to modify the jdbc-connection-pool setup in the glassfish-resources.xml file, which can be found under dukes-forest/dukes-store/setup folder.

You can find two different glassfist-resource.xml files, which have appropriate jdbc-connection-pool configurations for Derby & MySql databases, in the following location on GitHub:

https://github.com/AnilkumarGT/JEE6/tree/master/dukes-forest/dukes-store/setup

You can replace the original glassish-resources.xml file with the contents of either of these two xml files and you would have switched from Derby to MySql or vice-versa.

The original code base does provide a dukes-forest-model.mwb (found under dukes-forest/entities/sql folder), which can be opened in MySQL Workbench and can be forward engineered to create an appropriate schema. I did create the initial DB via this method, but when i started the app, it did not work due to a DB related issue, which I had to resolve by adding a specific column to one particular table in the entire schema. Sorry, I have forgotten which table that was, but once that was fixed, i was able to run the full application without any issues.

Here is the dukes-forest-model.mwb and a sql script to create the entire forest schema, with test data, in a MySql database:
https://github.com/AnilkumarGT/JEE6/tree/master/dukes-forest/DB_Scripts

You should now be able to setup the DB using the SQL script, instead of the dukes-forest-model.mwb file and that should work without any issues. Do let me know if you run into any issues while running this script or the app.

Read More

JEE6 : Dukes Forest Tutorial : Part 1

When I was looking around to setup the Dukes Forest tutorial, which is one of the “official” tutorials on JEE 6 components, published by Oracle, getting to the code base was not as easy as it should be.

Official Tutorial Link: JEE 6 Tutorials

Read More

Web Services

Web Services

Web application designs are increasing using a client-server styled architecture, where both the client and server side applications are typically designed and implemented using different but appropriate technology stack, but are capable of communicating with each other over HTTP using XML / JSON data formats. While SOAP based services are still relevant in an enterprise arena, REST styled services are gaining popularity for various external application integrations.

Read More