Wednesday 8 May 2024

Oracle ADF Interview Questions and Answers Latest 2024



Oracle ADF Interview Questions & Answers Latest

---------------------------------------------------------------

1) What is Oracle ADF ? 

Answer: Oracle Application Development Framework, usually called Oracle ADF, provides a commercial Java framework for building enterprise applications. It provides visual and declarative approaches to Java EE development. It supports rapid application development based on ready-to-use design patterns, metadata-driven, and visual tools.

2) ADF Features-

Answer:  Making Java EE Development Simpler.
Oracle ADF implements the Model-View-Controller (MVC) design pattern and offers an integrated a solution that covers all the layers of this architecture with a solution to such areas as:
·        Object/Relational mapping, 
·        Data persistence, 
·        Reusable controller layer, 
·        Rich Web user interface framework, 
·        Data binding to UI, 
·        Security and customization.
·        Its supports Rapid Application Development.
·        Declarative approve (XML Driven)
·         Reduce Maintenance Cost and time
·        SOA Enabled

3) What is ADF BC (Business Components)? Describe them.

Answer: All of these features can be summarized by saying that using ADF Business Components for your J2EE business service layer makes your life a lot easier. The key ADF Business Components that cooperate to provide the business Service implementation is:

Entity Object: An entity object represents a row in a database table and simplifies modifying its data by handling all DML operations for you. It can encapsulate business logic for the row to ensure your business rules are consistently enforced. You associate an entity object with others to reflect relationships in the underlying database schema to create a layer of business domain objects to reuse in multiple applications.

Application Module: An application module is a transactional component that UI clients use to work with application data. It defines an updatable data model and top-level procedures and functions (called service methods) related to a logical unit of work related to an end-user task.

View Object: A view object represents a SQL query and simplifies working with its results. You use the full power of the familiar SQL language to join, project, filter, sort, and aggregate data into exactly the “shape” required by the end-user task at hand. This includes the ability to link a view object with others to create master/detail hierarchies of any complexity. When end users modify data in the user interface, your view objects collaborate with entity objects to consistently validate and save the changes.

4) How does ADF fall in MVC architecture?

Answer: Oracle ADF Architecture is based on the Model-View-Controller (MVC) design pattern.MVC consists of three layers which are a model layer, view layer, controller layer. Oracle ADF implements MVC and further separates the model layer from the business services to enable service-oriented development of applications.
The Oracle ADF architecture is based on four layers:

The Business Services Layer

This layer provides access to data from various sources and handles business logic. ADF Component comes, in this section are ViewObject, EntityObject, ViewLink, Association, etc

The Model layer

This layer provides an abstraction layer on top of the Business Services layer, enabling the View and Controller layers to work with different implementations of Business Services in a consistent way. ADF Component comes in this section are PageDefn, DataBindings,DataControls(AppModuleDataControl, WebServiceDataControl)

The Controller layer

This layer provides a mechanism to control the flow of the Web application. ADF Component comes in this section are TaskFlows(Bounded and unbounded, faces-config.xml, adfc-config.xml)

The View layer

This layer provides the user interface of the application. ADF components comes in this section are jsff, jspx page.

5) Oracle ADF Life Cycle Step by step easy way to answer :

Answer: It has the following phases :

a) Restore view :

When we hit the URL in the browser it will build the component tree corresponding to the tags given in the JSF pages.
for the first time, it will build the tree and saves in the server memory.
For the second time onwards, it will try to restore the existing component tree from the server memory.
Otherwise, if there are any changes in the page components it will rebuild the tree again.

b) Initialize Context :

In this phase the databinding.cpx file will be read and the bindingcontext object will be created based on that. 
Binding context is nothing but a mapping of pages and page definitions.
From the binding context, it will identify the page definition corresponding to the page. 
it will read the page definition file and creates the binding container objects.  

c) Prepare model  : 

Once the binding Container is ready it will try to prepare the model objects bypassing any parameter values 
and if there are any task flow parameters are all evaluated in the phase

d) Apply Request Values :

If we enter any values in the browser against the form fields, those values will be applied against the component tree objects. 

e) Process validation :

Once the values are applied to fields they will be validated if there any client-side validation is specified. like a mandatory min-max length.

f) Update model values : 

Once UI validation is passed values will be applied to model objects like VO and EO

g) Validate Model Updates :

If there is any validation specified at entity level that will be executed. 

h) Invoke action :

Event-related actions like the action method and action listener code will be executed

i) Metadata commit : 

If there are any MDS related changes will be saved.

j) Render response : 

Based on the action it will either navigate to the next page and display the response in the browser are continuing on the same page. 

6) What are the various components in ADF?

Answer: Oracle ADF has following components
ADF Business Components: VO, EO & AM
ADF Model : DataBinding (.cpx, .xml) & DataControls(.dcx)
ADF View: JSP, JSF, ADF Faces etc.
ADF Controller: Task flows (adf-config.xml), faces-config.xml


7) How to enable security to ADF Application?

Answer:
1. Go to the menu Application -> Secure -> Configure ADF Security and go through the wizard of creating login pages. 
2. Go to the menu Application -> Secure -> Application Roles and create an application role for this application.
3. Create a test user and assign an application role to it.
4. Grant all required application resources to this role.

8) How can you manage the transaction in ADF?

Answer: In ADF transaction can we manage at ApplicationModule as well as task flow level.
Task flow supports different mode of transaction like:

• No Controller transaction 
• Always begin new transaction 
• Always use existing transaction 
• Use Existing Transaction if possible

9) What is the purpose of Chanage Indicator?

Answer:
While committing data to the table, database will check those columns to check weather we are committing on the latest data or not. 

10) What is PPR in ADF?

Answer: PPR means Partial Page Rendering. It means that in ADF we can refresh the portion of the page. We don't need to submit the whole page for that.

11) how to develop  Master-details view in ADF?

Answer: For Developing the Master-details view in ADF. You have to create a relationship between the 2 view object. That relationship can be created using the view link or association between entity Object. using that relationship you can create the master-details view of data. That master-details view can be Form-Form, Form-Table, Table-Table, Table-Form.

12) What is the difference between Action and ActionListener?

Answer:
ActionListener: ActionListener is the method which got invoked when the user clicks on the Component like button, command link, etc.
Action: Action is the outcome of where you want to move once Actionlistener is completed. This can be defined in the task flow as an activity.  So when listener completed application is redirected to define activity. 

13) Definitions :

Answer:
jazn-data.xml - Store the security rules or permissions that you will create for the application, as well as providing a simple credential store for testing purposes.
JDeveloper also updates the following files, which already exist:

web.xml – Name of the login and error pages have been added to this file. 

weblogic.xml - The Section “security role assignment” of this file is used to map users (also called “principals”) to roles in WebLogic. 

adf-config.xml -   
Applications level settings like this 
MDS configuration, 
Database locking mode, 
View Object Max fetch size.  

faces-config.xml:
The JSF configuration file is where you register a JSF application's resources such as custom validators and managed beans, and define all the page-to-page navigation rules. While an application can have any JSF configuration file name, typically the file name is the faces-config.xml file. Small applications usually have one faces-config.xml file.When you use ADF Faces components in your application, JDeveloper automatically adds the necessary configuration elements for you into faces-config.xml

adfc-config.xml:
The adfc-config.xml file is the default page flow diagram JDeveloper provided when you created an application based on the Fusion Web Application (ADF) template. adfc-config.xml is the default file name for an unbounded task flow. On this diagram, you can create a new page based on the template, which is not part of the existing orders-flow task flow.

adf-settings.xml: 

we will register Page Phase listener


14) What Is Binding Context And Binding Container?
Answer:
Binding context is a runtime map between the data controls and page definition of pages in the application which is used to access the binding layer. It is accessible through the EL expression in your jspx pages. Binding container is a request-scoped map that is used to instantiate the page bindings. This is accessible through the EL expressions. Also, since it is request-scoped map, it is accessible during every page request.

15) Which component in ADF BC Manages transaction?

Answer:Application Module, manages transaction.

16) Where is that we write business rules/validations in ADF and why?
Answer:
We should ideally be writing validations at an Entity Object level because they provide the highest degree of reuse.

17)  What is the Controller in ADF in respect of MVC architecture?

Answer: Controllers in the ADF framework are TaskFlows, Faces-config.xml, adfc-config.xml. In all there file you can define navigation between the pages.

18) What is an Entity object in ADF Framework?

Answer: Entity object in ADF is similar to Table in the database. Any Number of view object can create on single Entity.

19) What is the View object in the ADF framework?

Answer: ViewObject is representing the data collection. These view object can be created in different ways which are as follows:
Entity-Based ViewObject: This view object will hold the reference of the underlying entity. These view object can hold data from single or multiple entities. While defining Viewobject based on Entity you can select the attribute which you want to keep in the entity.
SQL Based ViewObject: These view objects are based on SQL quarries. This view object will have an underlying SQL Query. At runtime, they will hold data return by SQL.
Programmatic View Object: User can define the view attribute which defining view object. Data will insert programmatically into these ViewObject.
Static ViewObject: While defining user will define an attribute for view and in later he has to provide the values for those attribute. This kind of view object will have fixed no of rows.

20) What are Control Hints in Entity Object configuration?

Answer: Control hints are associated with the current view or entity attribute. All view objects inherit the hint values at run time.
Control hints for data controls and bindings, including Labels, Date & currency formatting.

21) Can an entity object be based on two Database Objects(tables/views) or two Webservices?

Answer: No, Directly it's not possible to create EO using multiple tables.
Entity objects will always have one to one relationship with a database object or web service.
But using views you can create Entity Objects on multiple tables.


22) What is the return type of Service Methods?

Answer: Service Methods can return Scalar or Primitive Datatypes.

23) How do you decide whether the application should be deployed as an EAR or a WAR?

Answer: If the application contains run-time customizations using MDS, it must be bundled as an EAR. For simple WebCenter portal application with no such customizations, WAR can be created.

24) Explain Data binding & its types, sub-types?

Answer:Oracle Application Development Framework (Oracle ADF) provides several types of binding objects to support the attributes and operations exposed by the Oracle ADF data controls for a particular business object:
ITERATOR BINDING, one per accessor attribute that your page or panel displays. Iterates over the business objects of the data collection and maintain the row currency and state.
VALUE BINDINGS, one for each data-bound UI component. Provides access to data.
ACTION BINDING, specifically defined for a button component. Provides access to operations defined by the business object.
Value Binding Types:
      1.  Attribute Value Binding
2. Boolean Value Binding
3. List Value Binding
4. Range Value Binding
5. Scroll Value Binding

25) What is Association in ADF?

Answer: Association represents the relationship between 2 and more tables like a foreign key relationship. If you create Entities from the database association will automatically get created for the entity. User can also define custom association if there is no foreign-key is defined in the database. In this way, the user can handle foreign key in ADF application and can remove overhead from the database.

26) What is the view link?

Answer: ViewLink represents the relationship between data of the same or multiple Entities or table. It works in the same manner as association work for the entity. While defining the ViewLink user can define the reference of the already created association if view object based on Entity Object else can manually select the column and define the link between 2 ViewObject.

27) Why we used an application module in the ADF framework?

Answer: Application module is the component of ADF BC which hold the references of ViewObject and instantiate them while running the application. view object reference defines in Application Module can be used to define the JSF/JSP page. If you want to use any ViewObject on your page you must have to provide the reference in Application Module


28)  What Is The Difference Between Visible Property And Render Property?

Answer: The visible property is set to true/false based on the requirement whether we want to see the field on the page or not at run time. The field or component still exists on the page, though hidden.
The render property is used to conditionally load the component based on a criteria.

29) How Do You Define Pagination In Adf?


Answer: In ADF 12c, there is ScrollPolicy property for af:table.
If we give ScrollPolicy = page then pagination will be added automatically. 

30) Can Service Methods return type Void?

Answer: Yes, Service Methods can Return type Void

31) Can Service Methods return Complex Datatypes?

Answer: No, service methods can return only primitive/scalar data types.

32) What Is The Difference Between Databindings.cpx And Datacontrol.dcx?

Answer:
The DataBindings.cpx file contains the Oracle ADF binding context for your entire application and provides the metadata from which the Oracle ADF binding objects are created at runtime. The DataControls.dcx file is created when you register data controls on the business services. This file is not generated for Oracle ADF Business Components. It identifies the Oracle ADF model layer data control classes(factory classes) that facilitate the interaction between the client and the available business service.

33) What do you mean by Bean Scope?

Answer: Bean Scope typically holds beans and other objects that need to be available in the different components of a web application.

34) Setting the range of table?

Answer:
<af:table rows=”#{bindings.LoggedInUserServiceRequests.rangeSize}”…/>

35) what is a region in Oracle ADF?

Answer: An ADF dynamic region is an ADF region where the task flow binding dynamically. Determines the value of its taskFlowId attribute at runtime. This allows the Fusion. web application to determine which bounded task flow to execute within the ADF

36) How to skip validation in ADF?

Answer:Add immediate="true" to the button. This way all input fields which don't have immediate="true" will be skipped in processing.
This method mainly used for view layer validation skip.


37) What Are Validators And Converters In Adf ?

Answer:
validators :

If somehow you need to create your own validation logic to meet your business needs. You can either create a validation method on the page’s backing bean (if you want custom validation for a component on a single page) or create JSF validator classes (if you want to reuse the validation logic by various pages in the application).In the real world, of course, creating the custom JSF validator classes would be adopted for ADF application for better reuse and maintenance.

converters :

converters are used for converting the values from one type to another, like decimal to bigdecimal or from string to date or date to string.

38) How to make any field mandatory?

Answer: Add attribute required="true" to that specific field.

39) What are the various access scopes supported by ADF?

Answer: ADF Faces supports the following scopes
1. Application Scope
2. Session Scope
3. PageFlow Scope
4. Request Scope
5. BackingBean Scope.

40) How to pass ''af:selectOneChoice'' value to other page?

Answer:Add valuePassThru="true" attribute to select list. 

41) What are the types of ADF Faces components?

Answer:ADF Faces components:
Data components
Input components
Layout components
Navigational components
Output components

42) What is PPR and how do you enable Partial Page Rendering(PPR)?

Answer: PPR is a feature supported by ADF Faces, using which we can render a small portion of an HTML Page, without refreshing the complete page.
It is enabled by.- Setting AutoSubmit property to true on the triggering element.
- Setting the PartialTriggers property of the target component to refer to the component id of the triggering element.

43) Explain Role Of Javascript In Adf?

Answer: ADF Component allows JavaScript function to listen for ADF Faces component events, like select or disclosure events, and browser DOM events like focus, mouse hover, mouse click or keyboard events. The component has its client Component property set to true.

44) What is the association in ADF?

Answer: Oracle ADF associations are business components that defines a relationship between two Oracle ADF entity object definitions (the "source" and "destination" entity objects) based on sets of entity attributes (the "source" and "destination" attributes) from each.

45) What are the different types/categories of Taskflows?

Answer: Taskflows are of two categories : Bounded and UnBounded.

46) When we drag drop VO from DataControl which binding occurs?

Answer: Value binding occurs.


47)  What is a Taskflow?

Answer: Taskflow is the controller of an ADF application, it provides us a declarative approach to define the control flow. It is used to define the navigation between pages and various task flow activities.

48) What is the difference between Bounded and UnBounded task flows?

Answer: Differences between Bounded and UnBounded taskflows :
Bounded taskflows can be secured but Unbounded can’t.
Bounded taskflows can accept the parameter and return values but unbounded taskflows don’t support parameters
Bounded taskflows has a single entry point or a default activity but unbounded taskflows have multiple entry points.
Bounded taskflows can be called from other bounded/unbounded taskflows but unbounded cannot be called or reused.
Bounded taskflows support transactions unbounded don’t

49) What Is Policy Store And Identity Store In Oid?
Answer: Identity Store is used to store information about users and groups while the Policy Store is used to store information about security policies.

50) What are the Data Control scopes available in ADF?

Answer: Isolate/Shared
Shared : Data Control instances will be shared across the task flows 
Isolated: New set of data control instances will be created

51) Can bounded task flow runs on the browser?
Answer: NO

52) Explain the purpose of using Controls flow in ADF?

Answer: Controls flow for Navigation from one activity to other activity with in the Task flow. 

53) What is the behavior of the router in ADF task flow?

Answer:
Based on some condition router can decide which route need to be followed. If none of the condition match in that case router will follow the default route defined by use.

54) How can navigation define in task flow?

Answer: Navigation can be defined in task flow using control flows and invoked by jsff/jspx page using action event like button link etc.

55) Can ADF task flow hold more than 1 view activity?

Answer: Yes. ADF task flow can have multiple view activity but 1 activity has to be defined as the default activity. 

56) What is the Parent Action in ADF Taskflow?

Answer: Parent action is activity using that you can invoke the Control flow define in parent task flow from child task flow. 

57) What is the method activity in Adf  Taskflow?

Answer: Using this activity you can invoke any method defined in manage-bean.

58) How to initialize ADF Taskflow?

Answer: Open the task flow in Overview Mode select general like there is initializer property. 
you can provide any method reference which will get invoked whenever task flow instance created.

59) What is Managed Bean?

Answer: Managed bean is a java class, which is initialized by the JSF framework. It is primarily used to hold view and controller logic. It is also used to execute Java code to be executed on a user action like Button Click.

60) What is Backing Bean?
Answer: Backing beans are those managed beans which have 1:1 mapping with a page. They have getters and setters
for all the components in the related page.

61) What is the difference between managed and backing beans?

Answer: Backing bean has 1:1 relation with page whereas managed beans can be used in multiple pages.
Backing beans scope is limited to the page whereas managed beans can have other scopes too.

62)  What is a different kind of resource bundle supported in ADF?

Answer: ADF supports different types of resource bundle which are as follows:
Property file based (text file which contains key-value pair)
xliff file based (XML file which contains key-value pair)
List Resource bundle

63) What is the difference between jspx and jsff?
 Answer: jspx and jsff file are the same in most of the manner. The only difference is that you can run jspx directly on the browser while jsff file container which will run on the browser.

64)  Following three main component attributes are used to enable partial page rendering:

Answer: autoSubmit: When the autoSubmit attribute of input or select component is set to true, and appropriate action takes place (such as a value change), the component automatically submits the form it is enclosed in.
partialSubmit: When the partialSubmit attribute of a command component is set to true, clicking the button or link causes the page to be partially submitted.
partialTriggers: All rendered components support the partialTriggers attribute. Use this attribute to list the IDs of components whose change events are to trigger this component to be refreshed.

65) ADF View Criteria

Answer: View Object in ADF is representing a table database object supports Select query against the table. View Criteria is adding ‘Where clause’ to the View Objects but Unlike SQL query View Object support multiple View Criteria. The purpose of allowing multiple ADF view criteria is you can choose the ADF View Criteria you want on your pages.

For example, I have an employee table has a column ‘type; with value ‘manager’ and ‘director’. I want to display the list of managers in one page and list of directors on another page. For this, I simply create two View Criteria, One for employee and another for director and use employee VC for employee page and manager VC for manager page.

66) What are the different types of bindings in ADF?

Answer: ADF contains the following types of bindings: 

Method Bindings: This binding is used when you want to use custom methods to be executed.

Attribute Bindings: This is the binding to retrieve the value of a single view attribute in the iterator binding’s current view row. For eg; #{bindings.CustomerId.InputValue}

Tree Bindings: This is used for tables, tree-tables, and trees. It is used to expose rows of a  table in the iterator binding’s current range. Eg; All Customers-#{bindings.AllCustomers.labels.CustomerId}

Action Bindings: This binding type is used when buttons or command links are dropped on the user interface and require an action to be performed on them. We can use data control operations on them, for eg, Create, Delete, First, Last, Commit, Rollback, etc.

Iterator Binding: This binding is created by the application to access the ADF binding context. It contains a reference to the page bound data collection, helps access it and iterates over its data objects.

67) Memory Scope for ADF Managed Beans
Answer:
Application Scope:

The application scope lasts until the application stops. Values that you store in a managed bean with this scope is available to every session and every request that uses the application.
Avoid using this scope in a task flow because it persists beyond the life span of the task flow.

Session Scope:


The session scope begins when a user first accesses a page in the application and ends when the user's session times out due to inactivity, or when the application invalidates the session. Use this scope only for information that is relevant to the whole session, such as user or context information. Avoid using it to pass values from one task flow to another. Instead, use parameters to pass values between task flows. Using parameters gives your task flow a clear contract with other task flows that call it or are called by it. Another reason to avoid the use of session scope is that it may persist beyond the the life span of the task flow.

Page Flow Scope :
Choose this scope if you want the managed bean to be accessible across the activities within a task flow. A managed bean that has a pageFlow scope shares state with pages from the task flow that access it. A managed bean that has a pageFlow scope exists for the life span of the task flow.If another task flow's page references the managed bean, the managed bean creates a separate instance of this object and adds it to the pageFlow scope of its task flow.

View Scope :
Use this scope for managed bean objects that are needed only within the current view activity and not across view activities. It defines the scope for each viewport that ADF Controller manages, for example, a root browser window or an ADF region. The life span of this scope begins and ends when the current viewId of viewport changes. If you specify a view, the application retains managed bean objects used on a page as long as the user continues to interact with the page. These objects are automatically released when the user leaves the page.

Request Scope :
Use request scope when the managed bean does not need to persist longer than the current request.

Backing Bean Scope :
A backing bean is a convention to describe a managed bean that stores accessors for UI components and event handling code on a JSF page. It exists for the duration of a request and should not be used to maintain state.
Use this scope if it is possible that your task flow appears in two ADF regions on the same JSF page and you want to isolate each instance of ADF region.

68) Can we change DB connection for any particular AM?

Answer:
YES, follow steps to change DB connection:
1. Double click on AM.
2. GO to the configuration tab, click on configuration file bc4j.xml
3. Here we have attribute JDBCName under element AppModuleConfig, change the connection which is created for other DB.

69) What is the difference between setting an immediate=true on a button and immediate=true on a text field?

Answer:
When immediate is true on a button, the command’s action and ActionListeners, including the default ActionListener provided by the JavaServer Faces implementation will be executed during the Apply Request Values phase of the request processing lifecycle, rather than waiting until the Invoke Application phase.

In case of a text field, by default, values are converted and validated together in the Process Validators phase. However, if you need access to the value of a component during Apply Request Values – for example, if you need to get the value from an actionListener on an immediate commandButton – then setting this to “immediate” makes that possible.

70) How can one bounded task flow can call another?

Answer:
One task flow can call another bounded task flow using a task flow call activity or a URL.

71) Task Flow Activities:

Answer:
Method Call: Invokes a method, typically a method on a managed bean. A method call activity can be placed anywhere within an application’s control flow to invoke application logic based on control flow rules.
Parent Action: Allows a bounded task flow to generate outcomes that are passed to its parent view activity. 
Router: Evaluates an EL expression and returns an outcome based on the value of the expression. For example, a router in a credit check task flow might evaluate the return value from a previous method call and generate success, failure, or retry outcomes based on various cases. These outcomes can then be used to route control to other activities in the task flow. 
Save Point Restore: Restores a previous persistent save point, including application state and data, in an application supporting save for later functionality. 
Task Flow Call: Calls abounded task flow from an unbounded task flow or another bounded task flow.
Task Flow Return: Identifies when a bounded task flow completes and sends control flow back to the caller. (Available for bounded task flows only). 
View: Displays a JSF page or page fragment. Multiple view activities can represent the same page or same page fragment. 
Control Flow Case: Identifies how control passes from one activity to the next in the application. 
Wildcard Control Flow Rule: Represents a control flow case that can originate from any activities whose IDs match a wildcard expression.


72) What is the difference between Trinidad.config and Trinidad.skins?
Answer:
Trinidad.config file is created when you create a WebCenter Portal application. This is used to register the skin-family you are going to use for your entire application. Trinidad.skins are used when we use the skin as a jar file. This file provides a mapping between the skin id and the actual path where the skin exists.

73) JMS Integration with ADF:
Answer:
1. in the web logic console, we need to create JMS Server, JMS Queue.
2. In the application, we need to create MessageDrivenBean implements MessageListener mapping the same jndi name of JMS Queue. We need to override onMessage() method.

Whenever we recieve some message into the JMS queue, this onMessage() will be invoked with the Message as parameter.

74) Exception Handling :
Answer:
We need to extend DCErrorHandlerImpl class and override reportException() method. We need to register that class in the DataBindings.cpx file.
When any exception is thrown in the ADF application, it will come to this metChod.

75) Contextual Event in ADF:
Answer:
Contextual Event is way to communicate between two taskflows. Sometimes we have taskflow to open in a region and have to get some values from task flow.

Contextual Events have two parts : 

Publisher Event (Producer) : As button or any component that can raise event

Handler Event  (Customer) : That listines and process event published by the producer

76) SOAP Web service invocation from ADF:
Answer:
there are 2 options:

1. Web service data control
2. Web service proxy

Data control :

Right click on any project --> New --> Web Services --> Web service data control
We need to give wsdl url and next, next ....finish... It will create web service data control almost similar to our Application module data control
we can drag n drop the methods and objects on to the page.

Proxy :

Right click on View Controller --> New --> Web services --> Web services Proxy
We need to give wsdl url and next, next ...finis... It will create java classes to invoke the web service. We will generally use that logic to invoke in button action listener or in some managed bean methods



Best Coding Practices in Oracle ADF:

Answer:
ü  Configure resource bundle before creating business components
ü  Avoid code duplication, Use utility classes instead – ADFUtil, JSFUtil, etc
ü  Avoid using editable tables, Use forms to edit data of tables
ü  Avoid editable primary key attribute
ü  Close iterators after use
ü  Use ADF Logger instead of System.out.println
ü  Choose bean scope carefully, lots of problems occur due to the wrong bean scope
ü  Don’t use getDBTransaction().postChanges unless you have a commit operation in the same request
ü  Check for null values instead of using try/catch block everywhere
ü  Avoid circular dependency on the list of values
ü  Use createRowSetIterator() for view object programmatic iteration instead of using AllRowsInRange
ü  Always use readOnly view object for view-based or reference data, This helps in performance as it avoids EntityCache
ü  Write business logic in model level implementation classes as AMImpl/VOImpl and call those methods in bean using binding layer
ü  Implement bean serialization for applicationScope, sessionScope, pageFlowScope beans
ü  ADF Faces requires only one root component per fragment
ü  Ensure uniqueness of task flow name, managed bean name and application module name in the entire application
ü  Always check for null values while calculating transient attributes default values
ü  Don’t write bulky and the unnecessary code in accessors of components or attributes as accessors are called multiple times so it’ll affect performance
ü  Catch Jbo Exceptions while calling pl/SQL functions/procedure and show as a message on the page instead of showing ADF/DB generated messages
ü  To apply validation and autoSuggest like feature in search form uses custom search instead of af:query component
ü  Ensure that component bindings should be in a request scoped bean not greater than that
ü  Instead of using setWhereClause() use query-based bind variable to improve performance
ü  Use basic tuning in ViewObjects to fetch rows from DB to improve performance
ü  Don’t set immediate true for editable input components
ü  Don’t use cached application module reference in bean instead of caching, look for AM when required as it is a pooled resource that’s why it is never guaranteed that you will get the same AM instance over a period of time. You’ll end up getting lots of Null Pointer Exceptions
ü  Don’t use RowId as a primary key in entity object, To avoid this define the primary key in DB table itself
ü  Never use SELECT * FROM in viewObject instead specify required column names
ü  Avoid ViewObject expert mode for entity-based viewObject. To add where clause, order by clause use viewObject or view object based bind variable