Loosely Coupled Corner
Raghu Kodali's Blog
All | SOA | General | Java | EJB3.0 | Web Services

20060208 Wednesday February 08, 2006

Developing and testing REST Web Services in Oracle AS

REST (Representational State Transfer) Services leverage the architectural style of the Web. These services use HTTP semantics and XML documents not SOAP envelopes. An intereting data point revealed by Amazon is, 85% of Amazon services are accessed via the REST interface ( Reference # 3). 85% data point seems little dated ( article was published in 2003). I couldn't find any newer stats or other interesting dataset.

Not only Amazon, but other large content providers like Yahoo (see search API exposed via REST), auction site -  ebay (see REST Developer Center) provide REST Services for developers.

For long time vendor and opensource implementations have provided tools/utilities for SOAP based Web Services, which did help the adoption of SOAP based Web Services, same wasn't true for REST services. But in past few months or an year looks like the support for REST is getting better and better. Oracle AS vesion 10.1.3 which was released recently, has support to develop, deploy, publish, and test REST services. JAX-WS 2.0 Dispatch API can be used with REST Web Services and Apache Axis 2.0 has REST support.

In Oracle AS 10.1.3, you can use either annotations to specify REST support or use the command line Web Services Assembler (WSA) in conjunction with ANT or use JDeveloper (10.1.3) wizards.

In case you are wondering how it all works, following shows the HelloWorld REST Service in Oracle AS 10.1.3 in the bottom-up approach, but top-down approach is supported as well.


//simple java class

package restservice;

public class RestHelloWorld {

public RestHelloWorld() {

}

public String SayHello(String S){

return "Hello " + S + " current data and time is " + new ../../page/java.util.Date.css().toString();

}

}


if you are using JDeveloper, all you will need to do is select the checkbox for REST Support (as seen in figure below) in the Java Web Service Wizard.

 

If you are using WebServices Assembler tool in OC4J, then you can do something like


java -jar wsa.jar -assemble

-appName tools

-serviceName HelloWorldREST

-interfaceName restservice.HelloWorldREST

-className restservice.RestHelloWorld

-input ./build/classes/service

-output build

-use literal

-ear dist/restservice.ear

-uri HelloWorldREST

-restSupport true


Once you have assembled the service and deployed either using JDeveloper/ANT Tasks/Enterprise Manager, you can test the REST service using the test harness provided.

The functionality of Web Services test harness has been expanded in the new release of Oracle AS. You can input parameter values to the operations you want to test. You can display and edit the SOAP request that will be sent to the service. It also displays the response returned by the service. The test harness also enables you to test Web Service Providers and REST Web Services. For a REST Web service, the test harness provides the same functionality as for JAX-RPC Web Services however, it also lets you generate and view the REST POST request and invoke the REST GET URL.

In our HelloWorld REST Service case , we can input a value for the parameter as shown below and click on the invoke button.

 

 

which will return the following XML

 

or you could handcraft a http URL in the following fashion to invoke the REST Service.

/my-app/my-service/{operationName}?{param1}={value1}&{param2}={value2">http://hostname:<port#>/my-app/my-service/{operationName}?{param1}={value1}&{param2}={value2}

which in case of our HelloWorld example will be

http://localhost:8888/Application1-RESTService-context-root/HelloWorldRESTSoapHttpPort/SayHello?S=Raghu

which will return the following in the browser

 

References

http://www.xfront.com/REST-Web-Services.html

http://www.xml.com/pub/a/2004/08/11/rest.html

http://www.oreillynet.com/pub/wlg/3005?wlg=yes

 

-raghu

 

 

( Feb 08 2006, 02:13:56 PM PST ) Permalink Comments [5]

20060115 Sunday January 15, 2006

Running JSF application in a cluster with session replication

I was trying to deploy a JavaServer Faces (JSF) application that is accessing EJB 3.0 backend services into a cluster environment. JSF application I was working on had application specific objects that were getting stored in session.

I had to apply the following tweaks to the JSF application in order to make it deploy on OracleAS cluster and run. But these are general requirements as well.

  • All objects that were getting stored in session had to implement java.io.Serializable
  • Make sure web.xml deployment descriptor had <distributable/> element

With the above configuration I was able to deploy the application, but once I started accessing the application I was getting errors stating that javax.faces.component.UIViewRoot doesn't implement java.io.Serilizable ........

In order to overcome this error, I had to add the following into web.xml

<context-param>

   <param-name>javax.faces.STATE_SAVING_METHOD</param-name>

   <param-value>client</param-value>

</context-param>

so that the state of the JSF components is stored on the client side.

-raghu

( Jan 15 2006, 10:24:38 PM PST ) Permalink Comments [2]

20060102 Monday January 02, 2006

EJB 3.0 as Web Services in GlassFish

The common goal for Java EE 5.0 specifications was to simplify development and deployment of applications and services. EJB 3.0, Java API for XML Web Services (JAX-WS) and Web Services Metadata for the Java Platform (JSR-181) specifications in Java EE 5.0 platform have made some significant advances to simplify Web Services development.

I have been trying out the open source implementation of Java EE 5.0 server called GlassFish. In this blog entry you will find the steps required to create a Hello World EJB 3.0 stateless session bean and publish it as a  Web Service using JAX-WS and JSR 181 annotations, and testing the Web Service from GlassFish console and a simple Java client program.

To start with you will have to download GlassFish JavaEE 5.0 server and install it . ( I was using build 30 on windows XP).

Set the following environment variables.

  • GLASSFISH_HOME to the directory where glassfish is installed (for example c:\software\glassfish)
  • JAVA_HOME to the directory where JDK 5 is installed (for example c:\software\jdk5)
  • ANT_HOME to the directory where ANT is installed (for example c:\software\ant)

Open a Dos command shell and start GlassFish using

asadmin start-domain domain1

in GLASSFISH_HOME\bin directory

Download the jar which has the source for endpoint and client.

You can develop, deploy and test HelloWorld EJB 3.0 Web Service with following steps

  1. Create an implementation class for endpoint
  2. Compile the implementation class
  3. Archive the implementation class into ejb.jar
  4. Deploy the ejb.jar
  5. Test using GlassFish admin console
  6. Generate client side proxies
  7. Create test client
  8. Compile client
  9. Run client using application client container

Create and implementation class for endpoint

In the downloaded zip file you will find a HelloWorld implementation class. You will notice two additional annotations in the class on top of usual @Stateless annotation for the stateless session bean. @WebService annotation lets you mark the bean class as Web Service and @WebMethod lets you mark the business methods that need to exposed as Web Service operations. Just adding @WebService annotation will expose all business methods as operations. @WebService and @WebMethod annotations are defined in JSR-181 specification. Following is the code for endpoint implemention class.


package org.hello.endpoint;

import ../../page/java.util.Date.css;

import ../../page/javax.ejb.Stateless.css;

import javax.jws.WebMethod;

import ../../page/javax.jws.WebService.css;

@Stateless

@WebService(serviceName = "HelloWorldService")

public class HelloWorld {

public HelloWorld() {

}

@WebMethod(operationName="hello")

public String sayHelloWithDateTime(String s)  {

    return "Hello " + s + " -- " + "Current Date and Time is - " + new Date().toString();

   }

}


Compile the implementation class

The downloaded package comes with a build.xml which has the required ANT tasks. From the DOS console where you have set the GLASSFISH_HOME, JAVA_HOME, ANT_HOME environment variables

Execute
ant compile
or you can run javac with javaee.jar (GLASSFISH_HOME/lib) in the classpath.

Archive the implementation class into ejb.jar

After succesful compilation, we need to archive the implementation class into ejb.jar archive.

Execute
ant assemble-ejb
to archive HelloWorld implementation class into HelloWorld.jar

Deploy the ejb.jar

Once we have compiled the endpoint sucessfully, we need to deploy the archive

Execute
ant deploy-ejb

Note: Change the build.properties accordingly to reflect the hostname, username, password, server instance names in your machine.

Once you have deployed sucessfully, you will be able to see the deployed bean and Web Service from the admin console of the server.

Test using Admin console

One of the neat features provided by GlassFish admin console, is the ability to test the Web Service using the test harness. Other application servers like OracleAS also provide this kind of Web Services test harness.

In the admin console, select HelloWorld under Web Services node and click on Test

In the test harness , enter a string like GlassFish and hit Hello submit button


You will be able to see the result and SOAP request and response.

Note: There is a bug filed for the case where the SOAP location in the WSDL is not populated correctly during the generation that happens in deployment. I manually fixed the generated WSDL to complete the example.

Generate Client side proxies

In case you want to create a sample Java client and invoke the deployed Web Service, you will need to generate client side proxy classes that will be used from Java client. GlassFish provides wsimport utility which can generate the proxy classes given the right WSDL.

Execute
ant clientproxy

to generate the proxy classes that will be used by client side program which we will build in next step.

Create Test Client

One of the annotations provided by JAX-WS specification is @WebServiceRef which can be used to declare a reference to a Web Service. Following is the client side code that we will use to invoke the HelloWorld EJB 3.0 Web Service. The program gets reference to HelloWorldService using @WebServiceRef annotation, gets the port and calls the operation hello with a String.


package org.hello.client;

import ../../page/javax.xml.ws.WebServiceRef.css;

import ../../page/../../page/org.hello.endpoint.HelloWorld.cssService.css;

import ../../page/org.hello.endpoint.HelloWorld.css;

public class HelloWorldWSClient {

@WebServiceRef(wsdlLocation="http://localhost:8082/HelloWorldService/HelloWorld?WSDL")

static HelloWorldService service;

public HelloWorldWSClient() {

}

public static void main(String[] args) {

   HelloWorldWSClient helloWorldWSClient = new HelloWorldWSClient();

   helloWorldWSClient.testService();

}

public void testService(){

try {

    HelloWorld helloService = service.getHelloWorldPort();

    System.out.println(helloService.hello("GlassFish"));

  }   catch (Exception ex) {

             ex.printStackTrace();

      }

  }

}


Compile client

In the downloaded zip file you will find the above client program.

Execute
ant compileclient

Run client using application client container

The last step is to run the compiled client using application client container.

Execute
ant runclient

you will see the following message in the dos console (ofcourse the date and time will be different)


runclient:

[echo] Executing client class as HelloWorldWSClient using c:/temp/downloadcenter/glassfish/bin/appclient.bat

[exec] Hello GlassFish -- Current Date and Time is - Mon Jan 02 17:34:44 PST 2006


Client applications using JAX-WS annotations can be Java EE components such as session beans.You will be able to get reference to Web Services in session bean and call the operations available in the Web Service.

 

-raghu

( Jan 02 2006, 11:00:06 PM PST ) Permalink Comments [13]

20051130 Wednesday November 30, 2005

SCA - The name of the new game in SOA land

Service Component Architecture (SCA) is going to be the name of the new game in SOA land. IBM, Oracle, BEA, SAP, Siebel, IONA and Zend are the initial participants in this new specification(s).

In simplified terms, the idea of SCA is to provide a language, platform and technology neutral compoent model that will help in assembly and composition of services.

I am sure we will see more buzz and work around SCA in the coming weeks. For the time being you will find some good information here.

-raghu

( Nov 30 2005, 08:42:06 PM PST ) Permalink Comments [13]

20051014 Friday October 14, 2005

EJB 3.0 - Refreshing entity with values populated from database triggers

I have been spending more time on EJB 3 this week helping a customer with a Proof of Concept (POC) and building a sample application. I bumped into the following usecase which I thought would be worth sharing it other developers.

Application has Customer entity that maps to Customer table in the database which has the following definition.

Version, CreateDate, and LastWrittenDate columns are actually populated by a database trigger which is as follows.

TRIGGER CUSTOMERS_INSER_TRG BEFORE INSERT ON CUSTOMERS
FOR EACH ROW
begin
   :NEW.Version := 1;
   :NEW.createdDate := sysdate;
   :NEW.lastWrittenDate := sysdate;
end;

A Facade session bean gets request from client application, processes the request creates a new customer object and persists it using EntityManager (em). Customer object doesn't have values for the above three attributes as there are populated by the trigger.  Now the usecase is such that, once the customer is created , the application needs to show the customer information plus the data populated by the trigger.

Sounds simple and obvious but it might trip enough people out there that are using a combination of db triggers, db sequences etc.. the trick is to remember that you need to issue em.flush() and em.refresh() statements after em.persist().

For example :

    public Customers createCustomers(String companyname) {
        final Customers customers = new Customers();
        customers.setCompanyname(companyname);
        getEntityManager().persist(customers);
        getEntityManager().flush();
        getEntityManager().refresh(customers);
        return customers;
    }

Will post more tips as I keep working on the sample app.

-raghu

 

 

( Oct 14 2005, 03:10:20 PM PDT ) Permalink Comments [2]

20051013 Thursday October 13, 2005

Dynamic Service Oriented Architecture

Ted Farrell and I worked together on an article titled Dynamic Service Oriented Architecture, that got published in JavaPro this week.

This article discusses the use of frameworks that provide loosely coupled bindings for user interfaces, and also provide the capability to tie these user interfaces into hetrogeneous backend systems, Web Services, Sevices or BPEL business process flows.

You can read the article at this link.

-raghu

 

( Oct 13 2005, 09:54:36 AM PDT ) Permalink Comments [0]

20051010 Monday October 10, 2005

EJB 3 Annotations for mapping composite primary keys that are part of foreign key

Tried to map composite primary keys which are also part of foreign key in EJB 3.0 ? Last week I got a simple test schema that stores Warehouse, parts and Inventory details from from one of the cusomters.

WarehouseInventoryItem has composite primary keys (WarehouseId and PartId) and these keys are also part of the foreign key that are used by Warehouse and Part tables.

The trick to map the primary keys (PK) that are also part of foreign key (FK) is to make sure that you don't have multiple writable mappings for each of these attributes in the POJO's.

Following are the mappings for PK and FK attributes in WarehouseInvetoryItem POJO.

WarehouseID and PartID are part of the primary key.

Make use you set updatable=false, insertable=false properties of @Column annotation

@Id
@Column(name="PARTID", primaryKey=true, nullable=false, updatable=false, insertable=false)

public Long getPartid() {

return partid;

}

@Id
@Column(name="WAREHOUSEID", primaryKey=true, nullable=false, updatable=false, insertable=false)

public Long getWarehouseid() {

return warehouseid;

}

Since the above columns become readonly now. You will update them via the setter methods of relationship attributes which are shown below.

@ManyToOne(targetEntity="mypackage.Part")

@JoinColumn(name="WAREHOUSEINVENTORYITEM.PARTID", referencedColumnName="PART.ID")

public Part getPart() {

return part;

}

public void setPart(Part part) {

this.part = part;

//set the part id here

setPartid(part.getId());

}

@Id

@ManyToOne(targetEntity="mypackage.Warehouse")

@JoinColumn(name="WAREHOUSEINVENTORYITEM.WAREHOUSEID",

referencedColumnName="WAREHOUSE.ID")

public Warehouse getWarehouse() {

return warehouse;

}

public void setWarehouse(Warehouse warehouse) {

this.warehouse = warehouse;

//set the warehouse id here

setWarehouseid(warehouse.getId());

}

 

 

-raghu

( Oct 10 2005, 10:02:31 AM PDT ) Permalink Comments [7]

20050929 Thursday September 29, 2005

JAOO 2005 wrap up

I was at JAOO 2005 conference early part of this week giving a talk about EJB 3 performance and attended few sessions. Large percentage of the attendees and speakers seemed to have been at previous JAOO conferences. This was my first time at JAOO conference.  

 

On Monday I attended the keynote done by Simon Phipps from Sun who talked about in general about open source and open source initiatives at Sun including Solaris 10 etc.. I liked the initial part of the presentation where he talked about connected world, digital identity, loosely connected models with some good examples, but I got myself busy on email (thanks to wifi - talk about connected world ! ) when Solaris drill down was happening. 

 

I met with Ted Neward in person, he seems to be doing back to back conferences like me. Both of us presented at JavaZone in Oslo, Norway couple of weeks back. Partially attended Ted?s Messaging fundamentals session, where he spent time to explain the drawbacks of RPC and advantages of messaging architectures. As usual Ted did a good job of bringing the point across with good presentation skills.

 

After that, I attended a session on Orchestration patterns by Dragos Monolescu from Thoughtworks. Dragos discussed some of the common patterns that are required in orchestration and how BPEL can be used for these patterns. He also discussed the BAM part of the story. I met with Dragos after his session, to see if he has evaluated Oracle BPEL PM and Oracle BAM for his patterns book,  he said he had a look at colllaxa long time back. On Tuesday I spent some time with him to walkthrough the Oracle BPEL PM, and a demo of Oracle BAM to get him upto speed or Oracle?s offering in Orchestration and BAM space, so that he can evaluate along with other options.  I was hit by jetlag in the later part of the afternoon, but went back to conference to catch up with some folks at exhibition grounds and the dinner party. Couldn?t stay for too long though.

 

On Tuesday the day started with some final tweaks to slides before my presentation about EJB 3 performance. Some good questions at the end of session, Mike Keith the co-spec lead for EJB3 was also there and chipped in with some expert comments Thanks Mike !

 

After lunch I attended FastSOA session by Frank Cohen, where lot of time was spent on findings from a study commissioned by BEA. It didn?t seem to be an apple-to-apple comparision  which made results less valuable for me. Session ended with plan for one more commissioned study. Oh so much for commissioned studies !!!

 

I attended Floyd Marinescu session on trends around enterprise Java, his top picks were, AOP, dependency injection, annotations, AJAX and rich clients, WS and SOA, JSR 170, and finally EJB3 . He discussed open source and how brazil is moving forward with their open source initiative plans. He was running around briskly before the session trying to set up recording his own session :-) which he said will be made available on his blog . Folks could probably check it out later.

 

I finally got to check out the JBoss jBPM session. Wanted to check out why they had to come up with their own solution when everyone (atleast good number of vendors and open source ) else seems to be going with BPEL.  One final slide that had the comparison checkboxes, between BPEL and JBoss solution had task assignment feature unchecked for BPEL and  integration was unchecked was JBoss solution. If that was the summary slide, then I think it is not convincing enough to just say that BPEL is clumsy (as mentioned in the presentation), there are solutions available that allow you to do task assignment based on workflow services that can be consumed by BPEL engines. The neat thing about this is BPEL engines just talks to workflow services in a loosely coupled fashion as they do to any other service.

 

Tuesday  was a busy day presenting, networking and attending sessions,  I had to return to my hotel room, to pack up and get ready for early morning bus ride and then on to a commuter flight to Copenhagen before I get on to the normal sized planes. Not sure how long it will take United airlines to provide wifi on the planes, as done by other European or Asian airlines. These guys  are really behind the curve. Could some one tell them that ? 

All-in-all a great conference with great content and good speakers who can cover the technologies in breadth and depth.

-raghu

 

( Sep 29 2005, 01:40:41 PM PDT ) Permalink Comments [0]

20050927 Tuesday September 27, 2005

JAOO 2005 Interview

I am in Aarhus, Denmark to attend and present @ JAOO 2005 conference. JAOO 2005 organizers were interviewing few speakers to publish the Q & A in the daily newsletter of the conference. I was interviewed on SOA.

The questions that have been posted to me are :

  • What is your background ?
  • What is the nature of the problem that SOA is a solution to ?
  • It is often said that SOA principles can  be applied inside and across organizations. Inside an organization, the IT infrastructure often consists of many hetrogeneous legacy systems that are not service oriented. How can SOA principles be helpful in this context ?
  • Do you think Web Services is the right technology to implement a service-oriented architecture ? Why or why not
  • Why top 3 sessions are you going to attend and why ?

You can find the answers in JAOO tuesday newsletter.

-raghu

( Sep 27 2005, 05:42:16 PM PDT ) Permalink Comments [0]

20050920 Tuesday September 20, 2005

Comparing EJB 3.0 and EJB 2.1 performance - cost of simplicity ?

With so much acitivity and hype around the new EJB 3.0 specification, about simplicity, ease of use, POJO based architecture etc.. Peter Zadrozny and I wondered how much does this all cost in terms of performance, In other words we weren't sure if EJB 3.0 can perform well. We wanted to find out how EJB 3.0 compares itself with EJB 2.1 in terms of performance. We already had answers for simplicity and productivity comparison between EJB 3.0 and EJB 2.1. (See Simplicity of EJB 3.0 - A step in the right direction article in JDJ)

Instead of working on a benchmark that deals with some raw numbers, we decided to take a typical EJB 2.1 application that uses known patterns like Data Transfer Objects (DTO's), Session facade etc.. migrate this application to EJB 3.0 architecture and then compare the performance between EJB 2.1 and EJB 3.0 applications running in the same enviroment.

The details of this study are published in the latest JDJ magzine (September issue) with the title The Peformance of EJB 3.0. I will summarize the results in this blog entry.

The application we used, test harness and methodology is described in the J2EE Performance Testing by Peter Zadrozny (Expert press 2002).

We compared three different test cases

  1. With and without DTO's in EJB 2.1 application against EJB 3.0
  2. Using Session Facade in EJB 2.1 application against a POJO based Session facade in EJB 3.0
  3. Usage of Container Managed Relationships (CMR) in EJB 2.1 against POJO based getter's

The two performance indicators we used were Aggregate Average Response Time (AART) and Total Transaction Rate (TTR).

The results were as follows

With and without DTO in EJB 2.1 application against EJB 3.0

We ran the tests with 15, 25, 50, 100, 150, 200, and 250 simultaneous users and we found that in both cases, response time and throughput, the difference between EJB 2.1 using DTO and EJB 3.0 was within 4%. This is within the margin of error, so for all practical purposes the performance is similar. To give you an idea of the actual performance, with 250 simultaneous users the average aggregate response time was 1,100 milliseconds and the throughput was an average 225 requests per second. This is very impressive, especially since there was no sleep time in the test scripts. The test case without DTO's produced an AART 28% higher than with DTO and EJB 3, and a TTR that was 19% lower.

 

 

In the above chart you can see that in all cases, the peak has been reached at 50 simultaneous users; however, on the DTOOff case performance goes downhill at 150 users, whereas EJB 3 and DTOOn hold on longer before going down. Interestingly, EJB 3 holds on a little longer by presenting 12% better throughput than EJB 2.1 with DTO for 250 users. This is likewise for the response time, where EJB 3 has 13% better number than EJB 2.1 with DTO for 250 users. You can say that under heavy loads, EJB 3.0 tends to perform better than EJB 2.1 (atleast in this test case)

Using Session facade in EJB 2.1 application against a POJO based Session facade in EJB 3.0

We conducted these tests with 15, 25, 50, 75, and 100 simultaneous users. To our surprise, we found that EJB 3.0 had roughly double the performance of EJB 2.1. Look at the response time in the image below and we can see that as the load increases, the difference in response time increases dramatically, from 18% for 15 users all the way up to 58% for 100 users, giving an overall average of 46%. Even more interesting is the TTR image, which clearly shows the throughput for EJB 2.1 Session Façade more or less stable for all user loads, but decreasing very slowly at 25 users. In the case of EJB 3.0, it peaks at 50 users and then begins a slow descent. However, the average throughput of EJB 3.0 is roughly double that of EJB 2.1

 

 

Usage of Container Managed Relationships (CMR) in EJB 2.1 against POJO based getter's

We began the testing with 5 users and then increased to 15, 25, 50, 75, and 100 users. (We had to add the case of 5 users because the throughput of EJB 2.1 peaked at 15 users.) The results again were pleasantly surprising: the performance of EJB 3.0 was roughly double that of EJB 2.1. The chart for the response time looks very similar to that of the Session Façade test case, the difference starts with 20% for five users and pretty much jumps to 55% for the rest of the user load. The results from the TTR standpoint can be seen in the image below. Here, the throughput of EJB 3.0 starts with a 25% difference and quickly grows to 140% to present an overall average of 111% better throughput.

 

Conclusion

Considering that we used only a developer's preview of EJB 3.0, we are very impressed with the performance aspecct of the new specification. (at least Oracle's implementation of it. We used EJB 3.0 developer preview in Oracle Containers for J2EE for this testing) .

Note: As mentioned above, check the JDJ article for complete details

-raghu

( Sep 20 2005, 08:30:59 AM PDT ) Permalink Comments [12]

20050915 Thursday September 15, 2005

JavaZone Day One (Sept 14)

From Oslo, Norway.  Well it is my first trip to Oslo, Norway. I am here to attend and present at JavaZone 2005 conference. JavaZone is supposed to be one of the big Java/J2EE conferences in Europe. JavaZone is organized by a group very enthusiastic Java/J2EE user group members. I was quite happy to see the high quality of skills that attendees had, Norway definitely seems to be one of those countries which is right on top of Java/J2EE technologies and skills. Since my session was not until afternoon, I decided to attend some of the earlier sessions in the day.

 

I attended the session delivered by Rod Johnson (Interface 21) on the subject of "Trends in J2EE" . Overall a good session, giving Rod Johnson perspective on state of J2EE, agility, role of frameworks, opensource  and AOP. Rod mentioned that more J2EE projects are getting completed on time these days, which indicate the healthier state of the platform, ofcourse he has to take some jabs at EJBs on and off :-) . He then discussed role of frameworks and how opensource has played a succesful role in making frameworks more mainstream. Got to agree on this one, these days it is not a taboo talking about frameworks or using them.  He went on to talk about why he thinks standards first approach is not good giving example of TopLink that has pioneered the O/R framework arena and how they had to keep fighting the Entity bean vs POJO battle. But the good thing it is settled now with EJB 3.0 specification and TopLink (Oracle) will provide the reference implementation for the persisitence part of the specification. 

 

Rod made some good points about what opensource is not,  these include,  not radical difference between opensource and closed models , it is not about making the world free of close source and how big vendors are playing in the field and potential to see more M&A happening.  One of the points that caught my attention was his quote Unwise to build J2EE applications without opensource' you can slice and dice the comment your way, these days lot of work is being done to take the good ideas in opensource community and vendor and make them part of the core platform , so it didn?t seem to be totally unwise for me ? you pick and choose the right bits for your project and not just because it is from opensource. 

 

Before I forget other thing you learn from the session is turn of the messenger software when presenting, one of Rod?s contact was pinging him during session :-) 

 

I attended Ted Neward?s session on Service Orientation, where he discussed the pragmatic approach to services. One of the best I saw on the pragmatic view on services, good examples and he nicely nailed it down to the wire. Good job ! 

 

After all the ejb bashing, claims, predictions that EJB will die and it will never be able to catch up, well it was time to deliver my own session, which was about the performance benchmark that we did to compare EJB 2.1 and EJB 3.0 specifications.  For a change the audience got a chance to listen to good side of progress that EJB specification has been making in the last few months. Afterall someone said that a coin always has two sides. I got some good questions. You will be able to read more about this performance benchmark in the September edition of JDJ and I will post a summary of it in my blog soon.

 

JavaZone was not about just sessions, but also getting trained on beer tasting (courtesy Oracle) and winning some great prizes if you are lucky. I was waiting to see my name come up for big plasma TV, but :-( - oh well better luck next time.

 

All in all great day one at JavaZone.

 

-raghu

( Sep 15 2005, 03:07:04 AM PDT ) Permalink Comments [2]

20050812 Friday August 12, 2005

Simplicity of EJB 3.0 - A Step in the right direction

My article on EJB 3.0 simplicity has been published in the August edition of  Java Developer's Journal (JDJ). You can read the article here. This article is the first in the series of two articles about EJB 3.0. Second article which Peter Zadrozny and I worked together, discusses the EJB 3.0 performance results. I don't think I can let the cat (performance results) out of the bag at this time. :-)

"The Performance of EJB 3.0" article is scheduled to appear in JDJ september issue.

-raghu

( Aug 12 2005, 02:17:35 PM PDT ) Permalink Comments [0]

20050711 Monday July 11, 2005

Free SOA Workshop(s)

Recently I have been working on the new Service Oriented Architecture (SOA) workshop, that will be rolled out in Redwood Shores, CA this month and a bunch of cities in August 05. We have re-designed the workshop to be more focussed on new and emerging technologies with more air time for individual technolgies, so that developers can get hands-on experience with EJB3, Web Services, JSF and  BPEL.

The workshop has two tracks. (1) J2EE (2) Integration.

In J2EE track developers will be able learn EJB3, Web Services and JSF technologies and work on hands-on labs which will help to get jumpstart on these technologies.

In Integration track developers will be able to learn BPEL, Workflow, Integration with JCA adapters and the concept of Real Time Enterprises with technologies like Event Driven Architecture (EDA), RFID, and Business Activity Monitoring (BAM). This track will also have hands-on labs will be help to get jumpstart on BPEL and Integration.

For more information on these workshops, list of cities, and registration click here

-raghu

( Jul 11 2005, 11:02:47 AM PDT ) Permalink Comments [1]

20050613 Monday June 13, 2005

What is Service Oriented Architecture ?

While some people assume that everybody will know the basics of Service Oriented Architecture (SOA) by now, I didn't find that being true during my presentations in Java User Groups (JUG) or in other conferences. I have written up an introductory article on SOA which was published by JavaWorld. Check out the article and let me know what you think !

- raghu

( Jun 13 2005, 11:24:04 AM PDT ) Permalink Comments [0]

20050511 Wednesday May 11, 2005

WS-Reliability + WS-RM = WS-RX

Looks like customers will not have to struggle about making a choice between WS-Reliability and WS-ReliableMessaging (WS-RM). (For background info, check out my earlier blog posting -  Do we need competing standards for reliable messaging ?).  Members in OASIS seem to have agreed to move on with a new standard Web Services Reliable Exchange (WS-RX) that will have the goodness of WS-Reliablity and WS-RM. Messaging in one of the key artifacts of Quality of Services (QoS) for SOA, and it is good to converge on a single standard. I think it is good news for both customers and vendors. Customer will not have to spend time on evaluating competing standards, but also potentially benefit from better interoperability between Services running in heterogeneous environments. On the other hand vendors can better spend their time on implementing common standard, and providing value-add services for customers instead of working on competing standards.

-raghu

( May 11 2005, 03:57:35 PM PDT ) Permalink Comments [0]


Archives
Language
Links
Referrers
Past Blog Entries
  • Developing and testing REST Web Services in Oracle AS
  • Running JSF application in a cluster with session replication
  • EJB 3.0 as Web Services in GlassFish
  • SCA - The name of the new game in SOA land
  • EJB 3.0 - Refreshing entity with values populated from database triggers
  • Dynamic Service Oriented Architecture
  • EJB 3 Annotations for mapping composite primary keys that are part of foreign key
  • JAOO 2005 wrap up
  • JAOO 2005 Interview
  • Comparing EJB 3.0 and EJB 2.1 performance - cost of simplicity ?
  • JavaZone Day One (Sept 14)
  • Simplicity of EJB 3.0 - A Step in the right direction
  • Free SOA Workshop(s)
  • What is Service Oriented Architecture ?
  • WS-Reliability + WS-RM = WS-RX
  • Why do you think SOA will be successful now ?
  • SOA != WS
  • SOA @ AustinJUG
  • Do we need competing standards for reliable messaging ?
  • More tooling for EJB 3.0 (Eclipse and EJB 3.0)
  • Does EJB 3.0 really make application development easy ?
  • Testing EJB 3.0 beans outside the container
  • Primary key generation in EJB 3.0
  • DTO an AntiPattern in EJB 3.0
  • NamedQueries in EJB3.0
  • Design time tools for EJB 3.0