|
|
||
Vivek Pandey's BlogUsing JPA with Rails on GlassFish and MySQLPosted by vivekp on March 21, 2008 at 12:56 AM | Comments (2)In my last post I mentioned that "...with Rails there are some known limitations, such as the ORM in Rails is not pluggable" by which I basically meant that you can't plug in another ORM and the Rails Model creation and db migration will not generate the correct code for another kind of ORM. The good news is that with little bit of coding you can reuse your entity classes. caroljmcdonald commented on my blog that Brian in his blog succssfully tried out JPA and Rails on WEBRick using JavaDB. So, in this blog I would go over what you would need to do to make JPA and Rails work on GlassFish v2.
Let's first try to understand how it is going to work: Rails by default uses ActiveRecords for Object Relational Mapping purposes or ORM. JPA is another ORM technique in JavaEE. Model class and database migration in Rails is what Entity class and persistence provider does for you in Java. Essentially In Java you just provide the Entity class and on the Rails side, you would provide the Model corresponding to the Entity class to do CRUD and that is pretty much it. The JPA provider does the rest. Setup GlassFish v2 and NetBeans
Create Java Entity Beans with MySQLFirst we create an entity class and a persistence unit.
Create the Rails ApplicationSimply download the Rails application then do the following:
cd $GLASSFISH_HOME/jruby/samples unzip jpa_blog.zip cd jpa_blog
Brian's sample Rails application was created using Rails 1.2.3 and GlassFish v2 JRuby module includes Rails version 1.2.6. So edit config/environment.rb and replace The last thing you want to do is prepare this rails application for deployment over GlassFish v2:
[/c/tools/glassfish/jruby/samples/jpa_blog]
$ant -f ../../install.xml create-shared
Buildfile: ..\..\install.xml
create-shared:
[mkdir] Created dir: c:\tools\glassfish\jruby\samples\jpa_blog\WEB-INF
[copy] Copying 1 file to c:\tools\glassfish\jruby\samples\jpa_blog\WEB-INF
BUILD SUCCESSFUL
Total time: 0 seconds
Simply deploy your rails application on to GlassFish (if you have not started Glassfish during GlassFish setup, you should do it now):
[/c/tools/glassfish/jruby/samples/jpa_blog] $cd .. [/c/tools/glassfish/jruby/samples] $../../bin/asadmin.bat deploy jpa_blog Command deploy executed successfully. In the GlassFish server.log you should see:
[#|2008-03-20T17:46:32.250-0700|INFO|sun-appserver9.1|javax.enterprise.system.to ols.deployment|_ThreadID=20;_ThreadName=Thread-28;|deployed with moduleid = jpa_ blog|#] [#|2008-03-20T17:46:33.531-0700|INFO|sun-appserver9.1|javax.enterprise.system.co ntainer.web|_ThreadID=21;_ThreadName=ObjectPoolManager;|PWC1412: WebModule[/jpa_ blog] ServletContext.log():JRuby init time: 94ms|#] [#|2008-03-20T17:46:39.296-0700|INFO|sun-appserver9.1|javax.enterprise.system.co ntainer.web|_ThreadID=21;_ThreadName=ObjectPoolManager;|PWC1412: WebModule[/jpa_ blog] ServletContext.log():Rails init time: 5750ms|#] [#|2008-03-20T17:46:39.296-0700|INFO|sun-appserver9.1|javax.enterprise.system.co ntainer.web|_ThreadID=21;_ThreadName=ObjectPoolManager;|PWC1412: WebModule[/jpa_ blog] ServletContext.log():Runtime 0 loaded|#] [#|2008-03-20T17:46:39.296-0700|INFO|sun-appserver9.1|javax.enterprise.system.co ntainer.web|_ThreadID=21;_ThreadName=ObjectPoolManager;|PWC1412: WebModule[/jpa_ blog] ServletContext.log():Requests can now be processed|#]
Now, accessing
Create a new Blog entry:
See the list of all the blogs:
I wanted to try it out on Glassfish gem but JPA is under development in GlassFish v3 and I get exception coming form inside GlassFish v3 where it can't find the PersistenceProvider:
javax.persistence.PersistenceException: No resource files named META-INF/services/javax.persistence.spi.PersistenceProvider were found. Please make sure that the persistence provider jar file is in your classpath. Mitesh is working on JPA support in Glassfish v3, I would do a follow-up blog for GlassFish gem as soon as I see it working. You can get the Rails and Entity code using the following link: Continue using JRuby on GlassFish and keep sending us feedback on GlassFish forums, dev@glassfish or gem mailing list. For the latest information about the gem and JRuby Update Center module can be found at GlassFish JRuby wiki. Bookmark blog post: CommentsComments are listed in date ascending order (oldest first) | Post Comment
| ||
|
|