I just published part 2 of my article series that I am writing with Steve Ims. It is titled RESTful Applications in an SOA. In it, we show building a RESTful Application around Energy Incentives. We illustrate different concepts of the Project Zero Programming Model:
*Building RESTful Services with the Data Access API's*Securing RESTful resources with Zero security*Restful Documentation*Zero Resource Model (ZRM)*Zero client programming model.*Dojo Grid Usage with Zero.
This is actually a scaled down example of the Incentive Finder component within the website called energycommons.com. Currently this site is in Beta and we are making many more enhancements to improve the usability and function.
MobileFirst, API's, and PaaS - Field Perspective
rbarcia 1000005FXD 1,535 Views
Many have commented on Oracle buying BEA out there in the blogging community. One thing I am very interested in seeing is which persistence mechanism is supported if they choose one. Most likely, we will see Oracle pushing BEA's App Server. TopLink has had a long history as a persistence provider and supports JPA. But BEA's App Server is based on OpenJPA (more specifically the Kodo product they purchased from SolarMetric.) IBM also built its JPA provider(available via the EJB 3 Feature Pack for WebSphere) on top of OpenJPA. It should be interesting to see which way Oracle/BEA goes with in persistence.
I recently released a tutorial on using the EJB 3 FP for WebSphere.[Read More]
rbarcia 1000005FXD 1,391 Views
Happy New Year Everyone!! I hope everyone has a blessed new year.
The WebSphere Web 2.0 Feature Pack is now officially production ready.
** API's for exposing Java EE applications using JSON , JSON-RPC , and ATOM .* An Ajax Proxy which allows you to deal with cross domain security issues.* Ajax Messaging Bridge for extending your Messaging based Bus to the browser. This can be used to support COMet patterns.* Ajax Development support, which includes the Dojo Toolkit and some more widgets for Dojo that we provide.
The FP can be used with WAS 6.1, WAS 6.0, or WAS CE 2.0.
A few weeks ago, I posted on how the EJB 3 FP and the Web 2.0 FP can be used together to provide a simplified Programming Model for the Enterprise.
Merry Christmas and sorry for not posting in a few days. I was trying to meet the deadline for getting the updates for my book to the publisher and Geoff and I had to pull a couple of all nighters. The title of the book is Persistence in the Enterprise and it should be released soon. I also just published an article on using the EJB 3 FP for WebSphere.
I wanted to post on this a few days back. In the first installment of my Project Zero Series (Part 2 based on Milestone 3 will be released shortly) we discuss RESTful patterns. One of the things that we covered is RESful patterns for getting a list of all items and a single record.
* http://host/resources/customer will return a list of customers.* http://host/resources/customer/roland will return the record for Roland.
One thing I have been getting asked is how do I RESTfully interact with a partial list. Not pagination of a list, but specifically asking for a list based on a set of keys. This is equivalent toselect * from table where key in (a,b,c,d,e). The most typical use case for this feature I have seen is a "Compare" feature in a shopping application, where I may select 3 or 4 items to compare side by side. By selecting a checkbox and clicking compare, I need to generate a RESTful URI with 3-4 keys. One thing to note that REST allows the use of query parameters as an alternative.
http://host/resources/customer/roland and http://host/resources/customer&customerId=Roland are both perfectly RESTful. I know that some people prefer not to use query parameters this way to access a single record. The rule of thumb I have heard is use the URI namespace for primary keys or other mandatory fields, and query parameters for filter criteria or optional parameters. With that in mind, there are three options for this RESTful query
Option 1: Namespace Option.
In this case, you add a set of keys after the product. This may require you to do some parsing of the URI, and it can be confusing if keys are Strings, because nested URI names can also imply relationships such as /category/3/product
Option 2: Multiple Query parameters for key
Most servers will give you an array back.
Option 3: Single comma separated key parameter.
This one seems more compact and straight forward, but again you have to parse yourself. However, if your service implementation is using a Select * from Product where productId IN(23,24,244,33), then you can pass this request parameter fairly simply into the In clause. Although with some implementations, building queries this way may by pass prepared statements.
Milestone 3 of Project Zero has been released. As posted on the Project Zero Developer's Blog, some major highlight's include:
I will be presenting at AjaxWorld in NYC, in the month of March, about Project Zero.
Also, I recently released an article that shows you how to use the EJB 3 Feature Pack for WebSphere.[Read More]
Below is a summary of the supported actions:
Jason McGee recently put out 3 videos on YouTube for Project Zero.
Installing Project Zero on Eclipse.Project Zero - Hello World on Eclipse.Installing Project Zero CLI (Command Line Interface)
In addition, if you would like to get a hands on tutorial, Steve Ims and I put out a tutorial back in October based on the M1 driver called Introduction to Project Zero: Part 1 - Building RESTful Services with Project Zero.
Part 2 of this series is going to be released in January, probably based on M3.
There are a few other articles out there as well:
Use Active Content Filtering for Project Zero application securityPreserve the security of your Project Zero applications, Part 1: Authentication and authorizationGet started with Project Zero and PHPOptimize database configuration and dependencies of Project Zero applicationsCreate a photo album application with Project Zero and REST design principlesAdd other scripting languages to your Project Zero applications
The Project Zero website itself has a few movies, samples, and tutorials worth checking out. There is a very comprehensive Developer's Guide as well.[Read More]
rbarcia 1000005FXD 1,333 Views
The WebSphere EJB 3 Feature Pack has GA'ed.
You can download it for free and install it on WAS 6.1.
You may also want to use the Web 2.0 FP as a way to expose your EJB 3 based solutions to Web 2.0 platforms like Project Zero. The Web 2.0 FP provides API's for exposing Enterprise Components via JSON, XML, or Atom. In addition, the Ajax Proxy component of the Feature Pack can help Dojo Applications invoke other services without worrying about the cross-domain issue.
The EJB 3 FP + the Web 2.0 FP I believe gives you a nice programming model for exposing some of your Enterprise Components via JSON based services. Below is an example of an Enterprise Application Model. I have seen more and more departmental apps (usually written in something like PHP or Ruby) need to access Enterprise Services. Project Zero makes it easy to invoke HTTP based services and build quick websites with REST Based Services, Dojo, Zero Resource Modeling, Rich client eventing and feed/rest assemblies. The main programming languages for Zero are Groovy and PHP.
Of course with Ajax Patterns, you may have to think about how chatty you want to be between the browser and the server. These are general concerns for most Ajax applications when exposing data.[Read More]
I recently stumbled across an Ajax article on sys-con that I can relate to How Hard is AJAX Coding? . I run into issues like this all the time. This article made me think of putting together a quick list of Ajax tools I have become a custom to using.
FireFox Poster has proven to be a nice little tool for testing my HTTP Based services. Project Zero has an REST Doc tester now, and it provides some meta-data rendering based on RESTdoc. This is really cool because I can get a sample of my RESTful service.
As an IDE, I usually use Eclipse Europa but also have installed the Aptana Plug-in, Recently, RAD 7.5 has released an Open Beta based on Europa that you may want to try out.
I am interested in knowing what other tools people use out there?
So for my first post, I wanted to introduce myself. My name is Roland Barcia, but a lot of people call me Roly. I work for IBM Software Services for WebSphere . I am a Senior Technical Staff Member (STSM) and Lead Web 2.0 Architect for my group. My focus is to help customers apply Web 2.0 concepts using our SWG, specifically in the WebSphere Brand. I specialize in various platforms, including the new Project Zero Platform, The Web 2.0 Feature Pack for WebSphere , the EJB 3 Feature Pack, and other areas such as WebSphere MQ or DataPower in the context of Web 2.0.
I am going to post on Web 2.0 topics related to middleware, specifically building services around REST, data access in a web 2.0 context, Ajax Patterns, and anything else related to Web 2.0 that may apply. I will talk about technologies like Project Zero and the Dojo Toolkit, and comment generally on what I see people doing in the Web 2.0 space, and try to be as objective as possible.
My latest entries can also be seen on the new Developer Works Project Zero Space.
I hope you enjoy my blog!