What is EJB/JEJB Transport:
- The EJB transport is only available for business services whereas the JEJB transport can be used both on a proxy service as well as for business services.
- EJB protocol enables us to create a business service which doesn’t stands for a SOAP / HTTP of File service, but for a remote EJB. This allows us to let our OSB clients or our own composite proxy services to communicate with EJBs with a simple SOAP xml message.
- JEJB protocol allows us take POJOs and make them available as they were EJBs. Here, the XML interface we will expose will only contain a reference to a Java object, and not its XML content. Introduced in OSB 11g.
- EJB Transport Uses Java Webservices Framework to invoke remote EJBs.
- JEJB Transport uses an RMI serialization /deserialization cycle and passes Plain old Java Objects(POJO)directly through the OSB to the remote EJBs.
- Using JEJB transport we can export a proxy service as a stateless session bean.
- JEJB Transport Supports both Inbound and Outbound whereas EJB supports only Outbound.
- JEJB doesn't convert Java objects to Xml Representation.
Example::
TO DO.
1.Create an EJB project and sample test client for that session bean.
2.Import
Client Jar to Osb.
3.Create JNDI provider in osb.
4.Create Business service.
5.Create Proxy service.
1.Create an EJB Project:
Note:providing brief notes as most of SOA developers familiar to work with EJBs
- Create a new generic application namely”OsbEjbSampleApplication” in JDEV.
- In Project Page select EJB technology from available to Selected.
- Select Entities from table
- And Click finish.Connect to application server datasource connection as we have application server datasource inWLS.
- Add a new connection with your db credentials to select table.
- Enter entity name and accept defaults and say finish.
- Here my jdbc name is “jdbc/DB/MyDatabase_new ” that I have created in WLS.Entity has created.Now go to persistant.xml..modify the jdbc name to correct jdbc name that we have created in WLS.Here my jdbc name is “jdbc/DB/MyDatabase_new ” that I have created in WLS.
- Create session bean and expose local and remote interfaces with selected methods.
- Create Deployment profiles:
2.Select Deployment.and create two deployment profiles..as
EJB--JAR deployment profile.
Client JAR deployment profile.
3..Right
click on Project-->Client JARDeploy-->>Deployed to JAR.(we will use this Client jar file later in osb)
4.Rightclick on project-->EJBJARdeploy -->Application server
- Create Sample java client by right clicking on our session bean.
- open this client file right click on this file and Run it to test our web service.
- copy the Jndi name from client class.(this is EJB bean JNDI name)“OsbEjbApp-OsbEjbPro-osbEJbSession#osbejbpro.osbEJbSession”:
2.Import
Client Jar to OSB
- Create JAR deployment profile for client project.
- Deploy client Project to JAR profile.
- click next..observe the archive file output file path of this Jar file..We need to import this Jar file into OSB in next step..
- Login to sbconsole.Create session -->Project Explorer-->create Anew Project For this EJB transport-->Create Resource->Utility/JAR.
- Enter Name for Client Jar file in Osb-->click on Choose file-->navigate to Output archive location which we have noted in previous step(Our Jdev Client project JARdeployed path)-->select the Jar file and click on save.
3.Creating
JNDI provider in OSB
- Click on JNDI Providers under Global Resources and to add our new JNDI provider click on Add.It will display new window for JNDI provider
- enter values
Provider
URL :http://localhost:7001(server URL where your weblogic server is
running)
Uname/Pwd::weblogic/welcome1
enable
java cache
- Save it.
4.Creating
Business service
- Go to create resource-->Business services.
- Enter Name for your business service and select Transport typed service as Service type and click next.
- In the Transport Configuration Screen Select Protocal as JEJB and enter END Point URI as“jejb:<jndi_provider_name>:service_name ” format.
Note: Here
service name is the JNDI name that we have copied in JDEV for Client
Project.
Here
END point URI:(Please don't include any spaces after : (colon).It
will raise an error like it is invalid URI)
jejb:MyJNDIProvider:OsbEjbApp-OsbEjbPro-osbEJbSession#osbejbpro.osbEJbSession
- click on ADD.
- click next..It will navigate TO JEJB Transport Configuration.
Client
Jar:select the client Jar file That we have imported earlier select
it and submit.
- Business interface: remote session bean(here by default it has selected my remote session bean)
- Methods:I have only one method in my EJB..
- Finally our BS looks like this..Save it.
5.Creating Proxy service
Note:
We can create Proxy service directly in osb
console..Or we can Export that project from Console to local
system(whatever the location we want..it exports entire project as a
jar file).And in Eclipse IDE create config project and OSB
Project.Inside the OsbProject we can import this Jar file and we will
create Proxy service for this.
Eclipse IDE is very easy to develop message
flow for Proxy service.So I imported the project into Eclipse and
will create Proxy here.
NOTE:
While Exporting project from console to local
select “Export Resources” instead of“ExportProjects” because
Export resources will export all the dependent files for the selected
project like with JNDI Provider also.Other wise eclipse will throw
error like missing JNDI provider.
My eclipse looks like this.
- Right click on Project -->New-->Proxy service.
- Select Transport Typed Service in service type.
- Select JEJB and leave the Endpoint URI as it is and click Next.
- JEJB Transport Configuration:
- select EJB 3.0 spec and select the Same Client Jar file that we have selected for BS.
save your proxy and test them to see our ejb methods are working or not