Welcome to Scribd, the world's digital library. Read, publish, and share books and documents. See more
Standard view
Full view
of .
Look up keyword
Like this
0 of .
Results for:
No results containing your search query
P. 1
ADF Best Practice to Give Webservice Calls - ADF Enterprise Methodology Group _ Google Groups

ADF Best Practice to Give Webservice Calls - ADF Enterprise Methodology Group _ Google Groups

Ratings: (0)|Views: 110|Likes:
Published by Soumik Ghosh

More info:

Published by: Soumik Ghosh on Jul 02, 2012
Copyright:Attribution Non-commercial


Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less





ADF best practice to give webservice calls
« Groups Home
ADF EnterpriseMethodology Group
6 messages -
5 new
-Collapse all-Report discussion as spam
Sanjeeb Mahakul 
View profileMore options
Mar 21, 6:15 pmHi,I need to know what are the best practice of integrating SOA architecturein ADF application. I mean i do not want the usual way of directlyinteracting with database from VOs or EOs.I have webservices deployed in a different server which i need to invokefrom ADF application running on WLS.Lets say suppose our project architecture is as follows:1. Design and code the web service endpoint interface. : The firststep in creating a web service is to design and code its endpointinterface, in which you declare the methods that a web service remoteclient may invoke on the service.2. Write a configuration file : We have to write a configuration filewith few details like Service name, namespace, package name, targetnamespace etc . This file will help us to generate a WSDL file.3. Generate WSDL file.4. Generate Proxies :By giving the WSDL location we can generateproxy clients from Jdeveloper.5. Deploy the webservice : We deploy the Webservices build in step 1in a different server(sps. Tomcat ).6. Invoke Webservice from client : From ADF view or model we caninvoke respective proxy clients methods that got generated in step 4.So here for point no 6 i need the clarification like from whichlayer(Model or ViewController) its the best to invoke the proxies and hitthe webservice. If from model then what are the different ways and if fromViewcontroller then what are the different ways.Looking forward to hear from you all soon.Regards,Sanjeeb
Reply to author ForwardReport spam
View profileMore options
Mar 21, 8:08 pmIt is always good idea to call web services from Model layer since it ispart of business service component.Putting web services call in view controller layer i.e. managed bean needto be last choice for particular validation scenario apart from that we can use web services as data controlfor directly deriving GUI fromweb services which is also good practice.I want some body to explore the best practices of how to show webservicesdata using VO Object in table and form format.If VO has few thousands records and if we need one field value fromwebserices based on input of one of VO attribute thenwhat would the best implementation.
The old Google Groups will be going away soon. Switch to the new Google Groups.
 About this groupEdit my membershipSponsored links
Barracuda Backup ServiceDouble the Storage for Same Price!From €40/200 GB/Month. Free Evalwww.barracudanetworks.comExpert Cognos resourcesLeading Cognos resource specialist:Cognos 8, Datastage, Planning, TM1www.eu-solutions.co.ukOracle Training CoursesLondon, Manchester & LeedsContact us for best priceswww.datrixtraining.com/
See your message here...
+ new post
ADF best practice to give webservice calls - ADF Enterprise Methodo...http://groups.google.com/group/adf-methodology/browse_thread/thread...1 of 53/24/2012 8:14 PM
Thanks,HasimOn Wed, Mar 21, 2012 at 8:15 AM, Sanjeeb Mahakul<sanjeeb.maha...@gmail.com>wrote:- Show quoted text -
Reply to author ForwardReport spam
Sanjeeb Mahakul 
View profileMore options
Mar 22, 10:10 amThanks Hasim and Soumik for your valuable inputs.Hasim,Yeah i know its the best practice to give webservice calls from Model but ineed to know different approaches for achieving the same.We can expose the webservices as datacontrol and use them but by doing sowe would be ignoring many ADf out of box features like ADF querycomponent,Graphs etc.Regards,Sanjeeb- Show quoted text -
Reply to author ForwardReport spam
View profileMore options
Mar 22, 7:19 pm* I want some body to explore the best practices of how to showwebservices data using VO Object in table and form format. ** If VO has few thousands records and if we need one field value fromwebserices based on input of one of VO attribute then ** what would the best implementation. *Nive coincidence as this is exactly the topic of my next OracleMagazine article that publishes in the July / August edition. So inbrief (as a sneak preview) here are your optionsOption 1 - Programmatic View Object (entity)Option 2 - Web Service DataControlOption 3 - Pojo DataControl and JAX WSBelow is my current thinking for this matter:==================================Option 1: I recommend this integration for all developers whoprimarily work with ADF Business Components as their business serviceand who need to integrate Web Services (e.g. as a look up). By using aprogrammatic View Object (and entity if you need the WS to beupdateable through ADF BC) you expose a single Data Control to tehapplication developer. ADF BC more or less neglects the fact that youare talking to a Web Service.Option 2: This is an easy to use declarative option that is good for simple Web Services that don't require you to intercept WS dataqueries and submission. Its good for accessing weather reportservices, stock quotes and similar. I would not recommend this for complex services like Siebel Web Services. If you have a choice(meaning you have developers that understand Java) I would forgetabout this option and go for the more complex option 3Option 3: This actually uses the JAX-WS proxy client to access theremote Web Service, allowing you to interact with the client / servicecommunication.Best practices===================================1. Integrate services on the model layer and expose them through aDataControl (ADF BC, POJO DC)2. Always create a wrapper object to access the WS proxy client. Never work directly against the client so your custom code survives re-generating the client
ADF best practice to give webservice calls - ADF Enterprise Methodo...http://groups.google.com/group/adf-methodology/browse_thread/thread...2 of 53/24/2012 8:14 PM
3. When using programmatic view objects in ADF BC to access the WebService, still make sure you use a POJO as an abstraction layer instead of coding the WS proxy client access directly into the VO Implclass.4. Consider caching strategies for fetched data (this is what a POJOlayer is also good for)5. Treat the access layer (POJO, VO, EO) as an abstraction layer thatencapsulates the service call. If you can write generic (abstract)framework extension classes as a vehicle for fellow developers toimplement best practices. This also includes to think aboutparametrization of the WS proxy client accessKeep in mind that no Web Service is designed for a specific client. Inthe ADF Business Components case this means that probably the WSdoesn't provide an API for query pagination or getEstimatedRowCount.If you own the Web Service and you know the clients accessing it, tryto provide additional information.Frank
Reply to author ForwardReport spam
Steven Davelaar  
View profileMore options
Mar 23, 5:06 pmNice overview Frank.I have been involved with various customers that need to call webservices from their ADF app.My experience with these customers fits nicely with your recommendations.The problem is that the ADF wizards seduce developers to ignore your recommendations.The typical process these customers go through:- they start with option 2: so easy- they quickly discover that it doesn't work for more complex webservices, and that they lack control- they move to option 3 (without abstraction layer)- that works better, unfortunately along the way some of the back-endweb services change which turns out to have a dramatic impact on alllayers. They need to redo their pages and data binding. So, they add theabstraction layer on top of the generated proxies.- if the web services are transactional, and need to deal with larger data sets, they find themselves adding a lot of plumbing code toimplement caching, handle pagination and implement business rules. Theyare also forced to add lots of Execute and ExecuteWithParams methodactivities in their task flows to prevent looking at stale data since ADF auto-caches inside the ADF binding layer. (btw, reusing the samepage def for multiple pages can prevent that in many cases) And wasn't ADF meant to provide all that out-of-the-box, well yes, if you use ADF BC...- so they end up with option 1. A great option, at my current customer we moved from option 3 (with abstraction) to option 1, and developer productivity has increased signifcantly (while we got a lot of novice ADF devs added to the project!).So I believe that option1 is really the way to go. Option 3 (or 2) isonly applicable when you are calling very simple read-only web services.However, the problem with option 1 is that it requires in-depthknowledge of ADF BC to create the required programmatic base classes.There are a few sample implementations on the web :- Jobinesh Blog, Building Programmatically managed business components -Part 1 (11.1.2):http://jobinesh.blogspot.com/2011/06/building-programmatically-manage...- Jobinesh Blog, Building Programmatically managed business components -Part 2 (11.1.2):http://jobinesh.blogspot.com/2011/06/building-programmatically-manage...- Steve Muench Undocumented sample (11.1.1): *ADFBC Application With NoDatabase Connection<http://java.net/projects/smuenchadf/sources/samples/content/ADFBCAppW...>*- Steve Muench Undocumented sample (10.1.3): *Entity and View ObjectBased on Web Service
ADF best practice to give webservice calls - ADF Enterprise Methodo...http://groups.google.com/group/adf-methodology/browse_thread/thread...3 of 53/24/2012 8:14 PM

You're Reading a Free Preview

/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->