ATG Interview Questions
1) Explain what is ATG?
ATG is a framework for creating web applications. It is based on J2EE standards.
2) Mention what is the core of ATG?
The core of the ATG platform is
DAF or Dynamo Application Framework ,which implements a component development model based on JavaServer Pages (JSPs) and JavaBeans.
3) Explain what is a droplet in ATG?
Basically, a droplet is an ATG’s custom servlet which has some atg-specific customization. It can be correlated with the HttpServlet in J2EE, but here we use DynamoServlet class which implements javax.servlet.Servlet interface in ATG.
Droplets are mainly used to abstract out the business logic in server side code.
4) Explain what is a component in ATG?
In ATG a component is simply is a configuration file (a simple text file with .properties extension), which uses a java class.
5) Explain what is a Nucleus in ATG?
In ATG, Nucleus is referred to the ATG container for components. It provides an hierarchical name space to component. Each component has a unique full name so that pages and other components can reference it.
6) Explain what is ATG component scope?
Scope is nothing but a nucleus variable, which tells the nucleus till when a component will exist.
7) By using what sign in the configuration files does nucleus properties are processed?
The nucleus properties are processed by using the $ sign in the configuration files.
8) Explain how you can create a JSPs in ATG or JSP page is processed in ATG?
You can create a JSPs in ATG or JSP page is processed in ATG by following steps,
User access the browser, type a URL and send a request for a JSP to ATG application
ATG application receives the request for the JSP file you requested
Once the JSP is found it is compiled into JAVA code
When all the content is fetched by the Java code, the end result is converted into plain HTML
This HTML page is sent back to the browser
This is how the JSP page is processed in ATG application.
9) Mention what are the types of Pipeline in ATG?
The types of request handling pipelines used by Dynamo
– DAS Servlet pipeline – It is used to handle JHTML request
– DAF Servlet Pipeline – It is used to handle the JSP request
10) Mention what is the default Scope of a Component?
The default scope of a component is Session.
11) Mention what are the two methods in a component?
The two methods in a component are:
getters & setters
12) Mention what is the difference between FormHandler, droplet and servlet?
The difference between FormHandler, droplet and servlet,
– FormHandlers are used when there are forms. They help to perform validation for the forms
– Droplet is from ATG, and it is used to put or render data in the database
– Servlet is used to submit data, it acts as a controller. It is not used to put data
13) Mention the Advantages of DAF?
It is used to deal huge data
It can write any object of type 1 call in to the db.
Dynamo messaging using patch bay and jms
Dependency injection
14) Explain what are the performance issues with ATG?
The performance issues with ATG include
High levels of database activity
CPU utilization problems
long running SQL queries
Slow response times
15) Mention what are the two types of cache that ATG repository maintains?
The two types of cache that ATG repository maintains
- Item Cache
- Query Cache
16) Explain what is ATG DPS? What are its elements?
ATG DPS is referred to ATG Dynamo personalization system. The key elements of ATG are
– User Profile Management
– Content Targetting
– Targeted E-mail
17) Mention what are the scope of Dynamo Components?
The scope of Dynamo Components are
– session
– request
– Global
The default scope is Global
18) Mention what is the main difference between JSP and DSP tag libraries?
The main difference between JSP and DSP tag libraries are
Dsp is a ATG specific tag libraries that involves in executing only DAF framework resources. Also, Dsp imports all objects of type class.
JSP involves in all the functionalities for web application development. Also, Jsp imports only the primitive data types.
19) Explain what if the ATG applications are deployed on a cluster of servers?
If the ATG applications are deployed on a cluster of servers then it is better to go for either Distributed caching or Locked caching.
20) Mention what is the difference between dsp and dspel tags?
DSP tags : DSP tag library tags support runtime expressions. These tags use an id attribute to name the scripting variables they create.
DSPEL tag : DSPEL tag library tags support JSTL Expression Language (EL) elements that are also evaluated at runtime.
21) Mention what is the standard atg.repository.QueryBuilder interface defines?
The standard atg.repository.QueryBuilder interface defines available query operations that repositories should support.
22) Mention what is the advantage of Nucleus in ATG?
The advantage of Nucleus in ATG are,
– It renders a simple way to write new components
– In nucleus, applications don’t need to contain code to create instances of components. It is created and administered through configuration files
– By organizing configuration files into layers Nucleus provides a convenient way to modify and extend component properties
– Nucleus provides a large number of out-of-the-box generalized service components
– Nucleus makes it easy for application developers to set the scope of their components
23) Explain how can you embed the output of a Java servlet (an ATG servlet bean) in a JSP?
In order to embed the output of a Java servlet (an ATG servlet bean) in a JSP you need to add dsp:droplet tag with a bean attribute.
24) Mention in order to use custom ATG servlet beans with the ATG Control Center what is required?
In order to use custom ATG servlet beans with the ATG Control Center you need to apply following requirements:
– You must make a BeanInfo file that defines the servlet bean’s parameters
– The class must extend atg.servlet.DynamoServlet
25) How to create Component?
we can create it in 2 ways,
I) using ACC
II)by creating java+properties file in our module/Eclipse
26) How to create custom Repository?
we have to create component/properties file
$class=atg.adapter.gsa.GSARepository
$scope=global
XMLToolsFactory=/atg/dynamo/service/xml/XMLToolsFactory
dataSource=/atg/dynamo/service/jdbc/JTDataSource
definitionFiles=/com/my/myRepository.xml
idGenerator=/atg/dynamo/service/IdGenerator
transactionManager=/atg/dynamo/transaction/TransactionM
anager
Explanantion : have to tell all the properties in our component
Class is GSARepository OOTB it will do all oprations getitem, getiteforupdate
XMLToolsFactory : for parsing xml
definitionFiles : items info will keep here
idGenerator : for generating unique ids
transactionManager : for transation purpose either to commit or roll back i particular transaction/task
27) How the module dependency happened in ATG ?
DAS DPS DSS DCS : from left to right
We maintained it in MANIFEST.MF file
Manifest-Version: 1.0
ATG-Config-Path: config/
ATG-Required: DAS DPS DSS DCS DAS
ATG-J2EE: j2ee-apps/testJ2ee
ATG-EAR-Module: j2ee-apps/testJ2ee
ATG-Class-Path: bin
28) Differences between the item-type and Component-item-type in definition(xml)file?
i)When your property in the item-descriptor needs
to hold only one value which is of type of any other repository
item, use ‘item-type=”item name”’ attribute.
ii)when your property needs to hold a collection
(set/array/map/list) of items of type of any other repository item,
use data-type = “set/array/map/list” and
component-item-type=”another Item name” to specify what type each
one of the element in the collection
Ex :
i)<item name=”student” >
<propety name=”std name” item-type=”name” />
</item>
<item name=”name”>
<proeprty name=”student name”/>
</item>
ii)<item name=”student” >
<propety name=”std classes” data-type=”set”component-item-type=”classes”/>
</item>
<item name=”classes”>
<proeprty name=”class name”/>
<proeprty name=”section name”/>
<proeprty name=”teachers name”/>
</item>
29) How connection will give from ATG module to DB?
/atg/dynamo/service/jdbc/JTDataSource.properties
Using JTDataSource component will maintain the Schema/DB connection
30) What are all the OOTB formhandlers you used in your application tell me 6?
Mainly i used in my application level
i)CartModifierFormHandler
ii)PaymentGroupFormHandler
iii)ShippingGroupFormHandler
iv)CommitOrderFormHandler
v)GenericFormHandler
vi)ProfileFormHandler
31)How can i resolve/initialize a particular component with out injecting in any component.?
ATG provides one method resolveName(component name we have to provide)
in GenericService class using it we can initialse the componenet.
32)What are all the input parameters for ForEach Droplet?
array,elementName,indexName.
33)How we can achive Inheritence in ATG Repository level?
sub-type-property=”type”
super-type=”super item”
Ex : <item-descriptor name=”shippingGroup” sub-type-property=”type” />
<item-descriptor name=”hardgoodShippingGroup” super-type=”shippingGroup” />
Here hardgoodShippingGroup is the subitem(like class) shippingGroup is the super Item(class)
Hence all the features/properties of shippingGroup we can get it in hardgoodShippingGroup
item also.
34)when or in which scenario i will go for ItemLookupDroplet?
To get complete item by providing id as a input parameter to that droplet.