WebORB v4.3 for Java is Released!

I am very happy to report that we released a new version of WebORB for Java – version 4.3. The theme of the release is ‘Developer Productivity’. As you may already know, WebORB enables integration at four different levels: remoting (RPC), data management, real-time publish/subscribe messaging and video/audio streaming and recording. With this release, we deliver code generators for all of these levels of integration. Below is a brief description of the new features you will find in 4.3:

  • Data management for JavaScript Clients – If you’re familiar with WebORB, more than likely you know about our data management framework. If not, then you can learn about it either from the WebORB Data Management documentation or the Data Management webinar recording. In short, the framework lets you quickly import your database schema into our Data Modeller tool and generate client and server-side code to enable full CRUD with your data from the ActionScript or JavaScript client or

    the server-side code. The same code generator can also create a demo application which demonstrates the power of the API. The JavaScript client support lets you create a data-driven ORM solution for your database in seconds. In addition to the APIs for CRUD operations, the JavaScript client also supports client-synchronization for the changes done by other clients working with the same dataset.

  • Remoting code generator for Robotlegs - Robotlegs is quickly becoming a popular ActionScript framework. We included a very powerful code generator which can generate all the supporting ActionScript classes for a given Java service (POJO, EJB, Spring bean, Grails service or SOAP web service) . The generated code enables remoting with the service and includes all the supporting classes conforming to the Robotlegs framework. This includes controller, events, mediators and ActionScript value objects. Read more about WebORB and Robotlegs integration.
  • Native Android Java code generator and invocation client - WebORB includes a tiny native Java library supporting remote procedure calls of the WebORB hosted services from native Android Java applications. Additionally, we also added a code generator which can create Java client-side code for any given WebORB service. The generated project also includes a visual invoker to make it easier to see the generated code in action.
  • Windows Phone invocation client (with code generator)- similar to the native Android Java library, we also added a native Windows Phone (Silverlight) client-side library into the WebORB distribution. Using the library Windows Phone applications can easily integrate with WebORB-hosted Java services using either RPC or publish/subscribe APIs. There is also a code generator which can create C# code and a sample Windows Phone project for any deployed Java service.
  • New Swiz code generator – We have completely rewritten the Swiz code generator to support the latest release of the Swiz framework. The generated code includes all the events, pre-wired controller, service invoker and value object types.
  • Code generator for rich media Flex, AIR and Mobile apps – WebORB for Java supports the RTMP protocol and enables video streaming and recording, remote shared objects and server-side data push. In this release we added a code generator which can create a sample Flex, AIR or  mobile application with the code demonstrating all of these features. Optionally, the code can be generated to support RTMP tunneling for any of the selected features. Read more..
  • Code generator for multi-client Publish Subscribe messaging – WebORB provides native libraries and APIs for publish/subscribe messaging for Flex, AIR, JavaScript, native Java and .NET clients. The unifying concept for all of these APIs is the messaging destination. With the new release, it is trivially easy to manage destinations and on top of this, developers can quickly generate native publish/subscribe messaging apps for all the supported client-side types.
  • Publish/Subscribe Messaging Test Drive – When you develop a messaging application, it may be very important to be able to observe message traffic over your destination. It is very easy to do that with the new release. Simply open the management console, Find your destination under the Messaging Server tab and click “Test Drive”. The feature lets you both create subscribers and publish test messages.

As you can see it is a feature packed release. We also fixed quite a few bugs and you can access a full report in the . We plan to publish follow-on posts with videos and examples demonstrating all the new functionality in the coming days.


Java Data Push to Native iOS, Android and Windows Phone applications

The example reviewed below demonstrates data push from a server-side Java application to three different native mobile app implementations: iOS, Android and Windows Phone. The server updates the data every 1.5 seconds and delivers it to the clients. The iOS client uses a persistent RTMP connection, the Android and Windows Phone clients use publish/subscribe messaging (via polling) to receive server-side updates. The source code for each mobile implementation and the server-side project (with deployment instructions) is available below the video:

Download source code:

Server-side Compilation and Deployment instructions:

  1. Download and install WebORB for Java (make sure to download version 4.3 or above) .The product is available for free with the Community Edition license. Without a license key, it will work in the “development mode” which will be sufficient to the this example. See WebORB Licensing for additional details.
  2. Download Java project files.
  3. To compile the Java project, add the following JAR dependencies: weborb.jar, red5.jar, spring-core-3.0.0.jar. All the required jar files can be found in [WEBORB-INSTALL-DIR]/webapp/WEB-INF/lib.
  4. The compiled classes can be deployed to [WEBORB-INSTALL-DIR]/webapp/WEB-INF/classes/examples/weborb (if the package structure changes, the directories under WEB-INF/classes will have to change as well).
  5. Register new messaging destinations. To do this, open [WEBORB-INSTALL-DIR]/webapp/WEB-INF/flex/messaging-config.xml in a text editor, add the following destination declaration before the closing </service> element, then save the file:
    &lt;br /&gt;<br />
    &amp;lt;destination id=&amp;quot;StockExchangeDestination&amp;quot;&amp;gt;&lt;br /&gt;<br />
      &amp;lt;properties&amp;gt;&lt;br /&gt;<br />
       &amp;lt;server&amp;gt;&lt;br /&gt;<br />
         &amp;lt;durable&amp;gt;false&amp;lt;/durable&amp;gt;&lt;br /&gt;<br />
       &amp;lt;/server&amp;gt;&lt;br /&gt;<br />
       &amp;lt;message-storage-policy&amp;gt;weborb.messaging.v3.MemoryStoragePolicy&amp;lt;/message-storage-policy&amp;gt;&lt;br /&gt;<br />
       &amp;lt;message-service-handler&amp;gt;weborb.messaging.v3.MessagingServiceHandler&amp;lt;/message-service-handler&amp;gt;&lt;br /&gt;<br />
      &amp;lt;/properties&amp;gt;&lt;br /&gt;<br />
      &amp;lt;channels&amp;gt;&lt;br /&gt;<br />
        &amp;lt;channel ref=&amp;quot;my-polling-amf&amp;quot;/&amp;gt;&lt;br /&gt;<br />
      &amp;lt;/channels&amp;gt;&lt;br /&gt;<br />
    &amp;lt;/destination&amp;gt;&lt;br /&gt;<br />
  6. Register new RTMP messaging application: To do this create a new XML file with the following contents in  [WEBORB-INSTALL-DIR]/webapp/WEB-INF/classes. Name the file stockexchange-web.xml (alternatively, you can download the file from here):
    &lt;br /&gt;<br />
    &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;<br />
    &amp;lt;!DOCTYPE beans PUBLIC &amp;quot;-//SPRING//DTD BEAN//EN&amp;quot; &amp;quot;;quot;&amp;gt;&lt;br /&gt;<br />
    &amp;lt;beans&amp;gt;&lt;br /&gt;<br />
      &amp;lt;bean id=&amp;quot;stockexchange.context&amp;quot; class=&amp;quot;org.red5.server.Context&amp;quot; autowire=&amp;quot;byType&amp;quot; /&amp;gt;&lt;br /&gt;<br />
      &amp;lt;bean id=&amp;quot;stockexchange.scope&amp;quot; class=&amp;quot;org.red5.server.WebScope&amp;quot; init-method=&amp;quot;register&amp;quot;&amp;gt;&lt;br /&gt;<br />
        &amp;lt;property name=&amp;quot;server&amp;quot; ref=&amp;quot;red5.server&amp;quot; /&amp;gt;&lt;br /&gt;<br />
        &amp;lt;property name=&amp;quot;parent&amp;quot; ref=&amp;quot;global.scope&amp;quot; /&amp;gt;&lt;br /&gt;<br />
        &amp;lt;property name=&amp;quot;context&amp;quot; ref=&amp;quot;stockexchange.context&amp;quot; /&amp;gt;&lt;br /&gt;<br />
        &amp;lt;property name=&amp;quot;handler&amp;quot; ref=&amp;quot;stockexchange.handler&amp;quot; /&amp;gt;&lt;br /&gt;<br />
        &amp;lt;property name=&amp;quot;contextPath&amp;quot; value=&amp;quot;/StockExchange&amp;quot; /&amp;gt;&lt;br /&gt;<br />
        &amp;lt;property name=&amp;quot;virtualHosts&amp;quot; value=&amp;quot;*,localhost, localhost:1935, localhost:8080,;quot; /&amp;gt;&lt;br /&gt;<br />
      &amp;lt;/bean&amp;gt;&lt;br /&gt;<br />
      &amp;lt;bean id=&amp;quot;stockexchange.handler&amp;quot; class=&amp;quot;examples.weborb.AppAdapter&amp;quot; singleton=&amp;quot;true&amp;quot; /&amp;gt;&lt;br /&gt;<br />
    &amp;lt;/beans&amp;gt;&lt;br /&gt;<br />
  7. Modify beanRefContect.xml from [WEBORB-INSTALL-DIR]/webapp/WEB-INF/classes by adding the following XML element before the closing </list> element.
    &lt;br /&gt;<br />
    &amp;lt;value&amp;gt;stockexchange-web.xml&amp;lt;/value&amp;gt;&lt;br /&gt;<br />
  8. Run WebORB for Java in a command prompt/terminal window by using the following command (run the command from the WebORB installation directory):
    java -jar weborb.jar
  9. Verify that WebORB is running by opening the management console from: http://localhost:8080
  10. Compile and run the mobile applications. Use the following configuration parameters:
    iOS – Hostname: if launching in iOS Simulator, use localhost, otherwise enter IP address of the machine where weborb is running. Application name: StockExchange, port – 1935
    Android and Windows Phone- WebORB URL – http://localhost:8080/weborb.wo (if running on a device, substitute localhost  with the IP address of the machine where WebORB is running).


Integrating Windows Phone Applications with Java, .NET and PHP

If you develop mobile applications for Windows Phone odds are you will need to integrate it with your backend services, which may be in .NET, Java or PHP. There are several points of integration including remote procedure calls, data push from Java or .NET, publish-subscribe messaging and so on. Some time ago we conducted a webinar where we discussed various integration strategies for Windows Phone applications. A recording of the webinar is now available online. The recording consists of five parts (each linked with the next one at the end of the videos). You can watch the webinar below or see it on our webinars pages (.NET webinars, Java webinars):

Cross Platform Mobile Development using Real Time Messaging

Cross platform application connectivity is to be a frequently requested and talked about feature. A lot of enterprise and consumer-facing applications require  robust data exchange mechanism between application instances running on mobile devices. On top of this, many applications depend on real-time updates and notifications pushed from the server to the clients. One of the approaches for cross platform data exchange is a feature called Remote Shared Objects. The video below provides an explanation of the feature as well as a demonstration of iPhone, iPad and Windows Mobile phone communicating with each other as well as a browser-based Flex application.

The demo was built using the latest version of WebORB for .NET (the Java version would work just as well), Communication Library for iOS and a client library for Windows Mobile included into the WebORB distribution. Enjoy!

Multi Client Messaging Code Generation

One of the new features we included into WebORB version 4.4 for .NET (and very soon in WebORB for Java) is the support for multi-client publish/subscribe messaging. If you’re not familiar with publish/subscribe, it is a simple, yet very powerful data exchange pattern. A computer program may be in one of the two roles (or in both) : a publisher or a subscriber. Publishers send messages to the server and the server routes the messages to all the subscribers. Subscribers can subscribe with some rules: for instance to receive messages which have a specific header. WebORB provides support for this type of integration for a variety of clients, including Flex, AIR, JavaScript, Java (both standalone and Android), Silverlight, Windows Phone and iOS. Some clients, for instance, Flex and AIR, in their SDKs enabling client-side support for publish/subscribe. For other client types, we provide libraries with the requiring APIs. Additionally, WebORB simplifies the problem of heterogeneous client integration. That means, clients from different environments can easily exchange messages with each other. For example, Android apps can send and receive message to/from Windows Phone or iOS apps. Message handling is also configurable. Published messages can be routed to (or received from) MSMQ, ActiveMQ or any NMS destination.

To make it easier to get started with publish/subscribe, we included messaging code generators into the latest release of WebORB.  The code generators create complete projects with all the source code demonstrating both message publishing and subscription for Flex, JavaScript, Java, Windows Phone and Silverlight. Please keep in mind that the actual run-time support also extends to AIR, Android and iOS. Future versions of

WebORB will include code generators for these environments as well.

The video below demonstrates the code generator and the supported APIs. Enjoy!

How to develop Windows Phone 7 apps for maximum reach

I recently had the opportunity to explore some Windows Phone 7 (WP7) developer forums to learn about some of the issues developers face when building WP7 apps and some of the questions that came up had to do with cross-platform compatibility and market potential for the device. Obviously, mobile developers want to be assured that their application can

reach the widest audience possible.

One of the keys is to get as many developers as possible on-board and developing for WP7. We believe WebORB will help expand the market for WP7 applications, while helping solve the cross-platform compatibility and integration issues.

WebORB’s WP7 support means that WP7 developers can create applications with connectivity to not only .NET classes, WCF, SOAP and REST services, data and media, but also to Java POJOs, EJBs, Spring Beans, Web Services and Grails controller services, data and media. WP7 will also connect with PHP classes, when this feature is rolled into WebORB for PHP.

WebORB also comes with some fantastic productivity tools and APIs, such as:

  • Service browser – displays a hierarchical listing of all the deployed services categorized by the deployment type;
  • Code generator – creates fully reusable code, as well as, Visual Studio Windows Phone 7 project files and sample UI;
  • Method invocation test drive – enables service methods to be invoked directly from the WebORB console for easy testing;
  • Security module – access to methods, services, classes and namespaces can easily be restricted using the WebORB console;
  • APIs – enable functionality for doing remote method invocations and data messaging (publish/subscribe, data push, remote shared objects, media streaming).

If you’d like to learn more about WebORB’s WP7 support, join us on April 21st at 3pm (CST) for a free webinar. We’ll be demonstrating how to use WebORB’s remoting and messaging APIs and productivity tools for WP7 development and deployment. Here is a link to register for this event: