Franck | Granite Data Services

Cocomonio


Archive for Franck:

Today’s Launch Of Our Enterprise Platform

By Franck July 18th, 2011 GraniteDS No Comments
Please, feature an image for this post.

Today, we are excited to announce the launch of the GraniteDS Enterprise Platform.

The Enterprise Platform of GraniteDS has been developed in response to the feedback we received in our many conversations with our users over the past weeks and months. Our team in Europe and the US conducted surveys, in depth interviews and spoke with as many GraniteDS users in person as possible. As a result, the release of the Enterprise Platform is the first step of many to come to make GraniteDS even more powerful and reliable for Flex / Java EE applications of any kind.

We are releasing the Enterprise Platform today as our recommended setup for projects using GraniteDS in production environments. The Enterprise Platform gives you:

  • An extensively QA tested and stable version of GraniteDS
  • Long term maintenance (5 years) with security updates and bugfixes
  • Flexible and affordable premium support or consulting with guaranteed quick response times

With the Enterprise Platform you will also get early access to new features that we plan to release soon like RTMP, extended mobile platform support, or out of the box clustering and integration with monitoring tools. For bundles and prices, check out our pricing page.

As a result, the GraniteDS Enterprise Platform enables developers and companies to leverage the full feature range of the open-source version of GraniteDS, along with a broad range of pre-packed enterprise-level services and full support for applications in development and production. This unique combination of features and services enables companies to leverage the full power of GraniteDS also in mission-critical applications through a highly stable, reliable and scalable distribution package.

Let us know what you think about this new offering! Please share your thoughts and comments with us at any time in the comments or via our ,  or our website.

Purchase the Enterprise Platform Now!

Review the pricing and choose your bundle here.

If you want to download and test a feature-reduced version of the Enterprise Platform (no clustering, no SSL, no technologies preview), check out the Community Platform that comes with pre-packaged real-time messaging native libraries (APR) and sample applications. Get it here.

Granite Data Services 2.2.1 GA Released

By Franck June 14th, 2011 GraniteDS No Comments
Please, feature an image for this post.

GraniteDS 2.2.1 GA is a bug and security fixes release with one major new feature: Gravity is now natively supported with WebLogic 9.1+ servers.

The security fix relies on a new configuration option and prevents arbitrary Java class instantiations through malicious AMF3 requests. (more…)

GraniteDS Wizard (technology preview)

By Franck March 1st, 2011 GraniteDS 1 Comment

The new GraniteDS Wizard Plugin is intended to facilitate the creation of new GraniteDS project under Eclipse.

1. Quick setup and usage:

In order to install and use it, you need at least an Eclipse 3.4+ bundle and, preferably, if you want to benefit from all of its features, the folowing plugins:

  • FlashBuilder 4.
  • GraniteDS Builder 2.2.
  • JBoss Tools 3 (with at least the archives tool, see is you don’t know what it is about).

You will also need a JBoss 5.1 distribution, as the default template that comes the wizard targets this application server.

Once you have setup this environment, donwload the new GraniteDS Wizard plugin on Github and unzip it into your eclipse/plugins directory. Restart Eclipse and you should now be able to see a “GraniteDS�? section in the “New Project�? dialog when you select “File�? -> “New�? -> “Project…�? in your Eclipse menu:

Select “GraniteDS Projects�?, click on the “Next�? button and select the first available template in the next dialog:

Click again on the “Next�? button and you should now see a standard project creation dialog with a specific “Template variables�? section at the bottom:

Enter a project name, change the “JBoss installation directory�? to your JBoss installation directory, accept all other default options (or change them if you want) and click on “Finish�?.

You should now see a new Flex / JavaEE project, configured for both FlashBuilder and GraniteDS builder, and with a “.package�? file that automatically deploy the project in the choosen JBoss deployment directory.

Tip: unfortunatly, you should also have an error when the project is first build… This is FlashBuilder error (actually a known bug), complaining that it hasn’t been able to create the html templates. Just right click on the error and ask it to recreate the template files.

2. Under the hood, modifying the template:

Project templates in this GraniteDS wizard tool are mostly made of Groovy scripts. Go to your “eclipse/plugin/org.granite.wizard_1.0.0.alpha1/resources�? directory. You should see two subdirectories, “libs�? and “templates�?.

The “libs�? directory contains GraniteDS libraries that are referenced by templates (see below).

The “templates�? directory contains actual templates. There is only one template at this time, in a directory called “jboss�?. If you open this directory, you will see two files and one directory:

  • template.properties: this file contains the name and description of the template, as they appear in the second screenshot above. The “title�? property is the title of the third screenshot above. The last property (“controller�?) is for advanced use only, don’t change it!
  • bindings.groovy: this file defines variables that are displayed in the “Template variables�? section of the third screenshot and that will be used later for the actual project creation. You may modify the values in this file in order to get default values that fit your environment (in particular, you should change the “jbossDir�? value so it will be set by default to your JBoss installation directory). The good thing is that you may do this change without restarting Eclipse: template files are reloaded each time you run the wizard.
  • project: this directory contains all files and directories that the template is made of. As you can see, some directory names are enclosed between ${} characters: this means that their names will be resolved against the actual values of templates variables, as defined in the bindings.groovy file and adjusted in the third dialog shown above. Some other files are ending with a “.gsp�? extension: these are Groovy templates, similar to GraniteDS builder templates. Finally, you will even see files named “@libs!…“: these files will be resolved by copying GDS libraries found in the “resources/lib�? directory.

As you may now understand, this GraniteDS Wizard is completely generic and could be used in order to make projects that have nothing to do with GraniteDS: it is simply a general mecanism for displaying and editing variables before copying template files and directories.

Some more informations before a future proper documentation:

  • Binding variables use Groovy closures with dependencies: the jbossDeployDir value is { new File(jbossDir.value, “server/default/deploy�?) }, a closure that uses the value of the jbossDir variable. If you change the “JBoss installation directory�? in the interface, you will see the JBoss deploy directory value changing accordingly. This is similar to Flex bindings, when you write something like text=�?The value is {bindableVariable}�?.
  • If a file shoudn’t be generated for some configuration, you may throw a CancelFileGenerationException to prevent its generation (see the .flexProperties.gsp file for an example).
  • There are currently 4 types of supported UI controls: text input, checkbox, combobox and directory selection. The type of the variable must be set accordingly to String, Boolean, String (again) or File.
  • Input validation is made on the fly: use the “validation�? and “errorMessage�? attributes in the bindings.groovy file to set it up.
  • If you omit the “label�? attribute, the variable won’t be shown in the UI intterface.
  • You may disabled by default a variable in the UI interface if you set the “disabled�? attribute to false: this may be done with the “false�? literal, by a call to a method that returns a boolean value or even by a closure that uses another variable value (see bindings.groovy for examples).
  • You may create other templates by copying the “jboss�? one and changing whatever you want. Again, you don’t need to restart Eclipse in order to see your new template: just rerun the wizard, the new template will be displayed in the list shown in the second screenshot.

Don’t forget this is an alpha work: we will i mprove this JBoss template and provide other ones for different environments.

At least you don’t need a psychiatrist ;-)

By Franck September 15th, 2010 GraniteDS 1 Comment
Please, feature an image for this post.

is somewhere beyond the final frontier: to get to GraniteDS into their decision trees, you first have to go with Java, which doesn’t even seem to be the most recommended option according to these guys. Then, you’ll have to follow this frustrating path:

Complete messaging? No.
Complete data management? No
Complete code generation? No.
A psychiatrist? No. (if you happen to choose Yes here, you get LCDS ;-)
Scale beyond one server? Yes.
J2EE-centric? Yes.
Here you are: GraniteDS.

So, after refusing all the good things, you, as a GraniteDS user, avoid at least the cost of a therapy!

But the most funny thing is at the end of their post:

We respectfully request that the developers of the other integration servers mentioned herein join us (…) 

You may guess that William and I are of course seriously studying this unexpected opportunity.

Reflection API, Big Numbers Support and Validation Framework (JSR-303-like)

By Franck August 10th, 2010 GraniteDS No Comments
Please, feature an image for this post.

Starting with GraniteDS 2.2, three ActionScript3 new features are available:

  • A reflection API, that greatly simplifies ActionScript3 class introspection;
  • Long, BigInteger, BigDecimal implementations in ActionScript3, with custom serialization options between Java and Flex;
  • A Flex validation framework, based on the “Bean Validation�? specification (JSR-303), with code generation tools support in order to replicate your Java entity beans constraint annotations in your ActionScript3 model.

The documentation for these three new features is available as a preview , and (the links will change to , and later, when the final version will be out).

What’s New in GraniteDS 2.0.0 RC1

By Franck May 20th, 2009 GraniteDS 1 Comment
Please, feature an image for this post.

Main New Features:

Granite Data Services 2.0.0 Release Candidate 1 has just been released and comes with four main new features:

  1. Google App Engine support: GDS applications may now be deployed on Google’s infrastructure. See details in William’s related posts on this blog.
  2. Servlet 3.0 preview: Gravity now implements data push with Servlet 3.0 API and may be tested with Glassfish v3 preview (lastest promoted builds only). See below for details.
  3. Configuration MBeans: you may now use your JMX console in order to manage several GraniteDS options and watch for runtime configuration details. See below for details.
  4. JDO annotations support: Gas3 now generates suitable ActionScript3 code for JDO annotated entities and the DataNucleusExternalizer takes care of JDO’s specific annotations.

Granite-config.xml Changes (MUST READ):

The granite-config.dtd has changed in order to make the config more readable: as a general rule, all configuration attributes use now a “dashed�? convention: “annotedwith�? is now spelled “annotated-with�?, “instanceof�? “instance-of�?, etc. There is also a new “gravity�? section whose meaning content is detailed in “Gravity Changes�? below.

The new DTD is online and will help you with a DTD aware XML editor.

Gravity Changes:

Gravity code was getting messy, with several duplicated source sections, and hard to maintain. With the addition of Servlet 3.0 and GAE support, things were going even more harder, so the code has been cleaned up and widely refactored. However, the new code has been fully tested and shouldn’t bring any problem.

A new feature in this rewriting is the use of a thread pool for publishing messages. Previously, a published message was delivered to subscribed channels in a synchronous way, using the publish request container thread (delivering means only duplicating the message for all channels subscribed to the message’s topic and adding each copy to each channel’s queue). This operation was potentially time consuming with a large number of channels connected to the same topic and could block the caller container thread for a significant amount of time. A thread pool is now used for that purpose in all servlet implementations (Tomcat, JBossWeb, Jetty and Servlet 3.0) except for GAE.

Instead of servlet parameters, Gravity configuration now goes in a dedicated section of granite-config.xml. Here is an example of all options with there default values:

factory=�?org.granite.gravity.DefaultGravityFactory�? channel-idle-timeout-millis=�?1800000″ long-polling-timeout-millis=�?20000″ reconnect-interval-millis=�?30000″ reconnect-max-attempts=�?60″> core-pool-size=�?5″ maximum-pool-size=�?20″ keep-alive-time-millis=�?10000″ queue-capacity=�?2147483647″ />

This section is purely optionnal and you may omit it if you accept default values. Full documentation will be provided later but here is some comments on the most important options:

  • channel-idle-timeout-millis: the elapsed time after which an idle channel (pure producer or dead client) may be silently unsubcribed and removed by Gravity. Default is 30 minutes.
  • long-polling-timeout-millis: the elapsed time after which an idle connect request is closed, asking the client to reconnect. Default is 20 seconds. Note that setting this value isn’t supported in Tomcat/APR configurations.
  • thread-pool attributes: all options are standard parameters for the Gravity instance.

You may also use the new Gravity MBean in order to change most of these options at runtime (see below).

Servlet v3 support is new in this RC1 and should be considered as beta software. The only up-to-date implementation of the new API at this time is in Glassfish v3 trunk and you may download it (Servlet 3.0 support has been tested with glassfish-v3-preview-b47-windows.exe and may or may not work with other builds).

Configuring the GDS chat sample for Glassfish v3 is a two steps process:

  1. Edit the graniteds/examples/env.properties and set SERVER_HOME to your glassfishv3/glassfish directory and SERVER_HOMER_DEPLOY to ${SERVER_HOME}/domains/domain1/autodeploy.
  2. Copy the content of the graniteds/examples/graniteds_chat/resources/WEB-INF/servlet3-web.xml into the web.xml file. Then, use the “deploy�? target of chat build file and start Glassfish (see Glassfish documentation).

You should then be able to connect to http://localhost:8080/graniteds-chat/ and test the application.

Configuration MBeans:

This RC1 comes with two new MBeans for GDS runtime management:

  • GraniteConfig MBean: this mbean will show an almost complete configuration state of GDS at runtime, with several things that were not accessible previously (except with a debugger): externalizers used so far, associated with serialized classes, enabled or disabled Tide components, etc. The only available operation provided by this MBean is a reload button: it will re-read your deployed granite-config.xml file and take care of your modifications. Note that everything may not be reconfigured at runtime but this may be at least a great tool for finding issues, for example, with externalizers configuration.
  • GravityConfig MBean: this mbean will display the current state of Gravity, letting you modify at runtime timeouts and pool sizing. You’ll be also able to restart Gravity: note however that this is only an emergency feature because all undelivered queued messages will be lost!

To access these MBeans with JBoss, browse to http://localhost:8080/jmx-console and scroll to the “org.granite�? section.

GraniteDS Seam AIR Demo

By Franck October 16th, 2008 GraniteDS No Comments
Please, feature an image for this post.

For people wanting to use GDS & AIR, you’ll find a sample graniteds_seam_air.zip file (download graniteds_seam_air.zip).

Some tips:

  1. You need to have graniteds-seam-1.1.0.zip installed in Eclipse (get it on Sourceforge ) and deployed in JBoss (started on localhost:8080).
  2.  

  3. graniteds_seam_air.zip is an Eclipse/Flex Builder (tested with 3.4.1/3.0.1 versions) project, unzip it in your workspace.
  4.  

  5. Use (Flex perspective) “Project�? -> “Export Release Build…�? and check the “Export and signed an AIR…�? option (creating a dummy certificate if you don’t have one).
  6.  

  7. Install the Person.air application.
  8.  

That’s it. Franck.