|
41.What Is Session Replication?
Session replication is used in application server clusters to achieve session failover.
A user session is replicated to other machines of a cluster, every time the session data changes.
If a machine fails, the load balancer can simply send incoming requests to another server in the
cluster.
The user can be sent to any server in the cluster since all machines in a cluster have copy of the
session.
Session replication may allow your application to have session failover but it may require you to
have extra cost in terms of memory and network bandwidth.
42.What Does Distributable Tag Means In Web.xml ?
In Java world, JEE applications use the concept of distributable web applications to provide
session-failover and enable load balancing.
You can set a JEE application to support session replication by adding distributable tag in
web.xml file.
<distributable />
43.What Are The Requirements For Making A Java EE Application Session Replication
Enabled?
Setting distributable tag in web.xml just enables the application to support session replication,
however it does not guarantee that your application will work fine in a session replicated
environment.
JEE Application developer needs to make sure following things are taken care during web
application development.
- All attributes/objects that are saved in HTTP Session are serializable. This means all your
custom objects and child objects of that should be serializable.
- Making changes to any session attribute should be done using session.setAttribute()
method. If you have reference to a java object that was previously set in session, you must call
session.setAttribute() method every time you make any change to the object.
44.What Are Different Mechanism Of Session Replication?
Session replication between multiple cluster nodes can be done in many ways. The best
approach may depend on the type of application. However there are few common methods
used by application server vendors.
- Using session persistence, and saving the session to a shared file system
(PersistenceManager + FileStore) . This will allow all machines in a cluster to be able to access
the persisted session from the shared file system.
- Using session persistence, and saving the session to a shared database
(PersistenceManager + JDBCStore) - This will allow all machines in a cluster to be able to access
the persisted session from the shared database system.
- Using in-memory-replication, This will create a in memory copy of session in all the
cluster nodes.
45.What Is CAP Theorem?
The CAP Theorem for distributed computing was published by Eric Brewer, This states that it is
not possible for a distributed computer system to simultaneously provide all three of the
following guarantees:
1. Consistency (all nodes see the same data even at the same time with concurrent
updates )
2. Availability (a guarantee that every request receives a response about whether it
was successful or failed)
3. Partition tolerance (the system continues to operate despite arbitrary message
loss or failure of part of the system)
The CAP acronym corresponds to these 3 guarantees. This theorem has created the base for
modern distributed computing approaches.
Worlds most high volume traffic companies (e.g. Amazon, Google, Facebook) use this as basis
for deciding their application architecture.
Its important to understand that only two of these three conditions can be guaranteed to be
met by a system.
46.What Is Sharding?
Sharding is a architectural approach that distributes a single logical database system into a
cluster of machines.
Sharding is Horizontal partitioning design scheme. In this database design rows of a database
table are stored separately, instead of splitting into columns (like in normalization and vertical
partitioning). Each partition is called as a shard, which can be independently located on a
separate database server or physical location.
Sharding makes a database system highly scalable. The total number of rows in each table in
each database is reduced since the tables are divided and distributed into multiple servers. This
reduces the index size, which generally means improved search performance.
The most common approach for creating shards is by the use of consistent hashing of a unique
id in application (e.g. user id).
The downsides of sharding are,
- It requires application to be aware of the data location.
- Any addition or deletion of nodes from system will require some rebalance to be done
in the system.
- If you require lot of cross node join queries then your performance will be really bad.
Therefore, knowing how the data will be used for querying becomes really important.
- A wrong sharding logic may result in worse performance. Therefore make sure you
shard based on the application need.
47.What Is ACID Property Of A System?
ACID is a acronym which is commonly used to define the properties of a relational database
system, it stand for following terms
- Atomicity - This property guarantees that if one part of the transaction fails, the entire
transaction will fail, and the database state will be left unchanged.
- Consistency - This property ensures that any transaction will bring the database from
one valid state to another.
- Isolation - This property ensures that the concurrent execution of transactions results in
a system state that would be obtained if transactions were executed serially.
- Durable - means that once a transaction has been committed, it will remain so, even in
the event of power loss.
48.What Is BASE Property Of A System?
BASE properties are the common properties of recently evolved NOSQL databases. According to
CAP theorem, a BASE system does not guarantee consistency. This is a contrived acronym that
is mapped to following property of a system in terms of the CAP theorem
- Basically available indicates that the system is guaranteed to be available
- Soft stateindicates that the state of the system may change over time, even without
input. This is mainly due to the eventually consistent model.
- Eventual consistency indicates that the system will become consistent over time, given
that the system doesn't receive input during that time.
49.What Do You Mean By Eventual Consistency? What Does Eventually Consistent Mean?
Unlike relational database property of Strict consistency, eventual consistency property of a
system ensures that any transaction will eventually (not immediately) bring the database from
one valid state to another.
This means there can be intermediate states that are not consistent between multiple nodes.
Eventually consistent systems are useful at scenarios where absolute consistency is not critical.
For example in case of Twitter status update, if some users of the system do not see the latest
status from a particular user its may not be very devastating for system.
Eventually consistent systems can not be used for use cases where absolute/strict consistency
is required. For example a banking transactions system can not be using eventual consistency
since it must consistently have the state of a transaction at any point of time. Your account
balance should not show different amount if accessed from different ATM machines.
Some reference material for better understanding on eventual consistency
- Microsoft Research Whitepaper about Eventual Consistency
- Amazon CTO about Eventual Consistency
50.What Is Shared Nothing Architecture? How Does It Scale?
A shared nothing architecture (SN) is a distributed computing approach in which each node is
independent and self-sufficient, and there is no single point of contention required across the
system.
- This means no resources are shared between nodes (No shared memory, No shared file
storage)
- The nodes are able to work independently without depending on each other for any
work.
- Failure on one node affects only the users of that node, however other nodes continue
to work without any disruption.
This approach is highly scalable since it avoid the existence of single bottleneck in the system.
Shared nothing is recently become popular for web development due to its linear scalability.
Google has been using it for long time.
In theory, A shared nothing system can scale almost infinitely simply by adding nodes in the
form of inexpensive machines.
51.How Do You Update A Live Heavy Traffic Site With Minimum Or Zero Down Time?
Deploying a newer version of a live website can be a challenging task specially when a website
has high traffic. Any downtime is going to affect the users. There are a few best practices that
we can follow
Before deploying on Production
- Thoroughly test the new changes and ensure it working in a test environment which is
almost identical to production system.
- If possible do automation of test cases as much as possible. We use selenium for a lot of
functional testing.
- Create a automated sanity testing script (also called as smoke test) that can be run on
production (without affecting real data). These are typically readonly type of test cases.
However depending on your application needs you can add more cases to this. Make sure it can
be run quickly by keeping it short.
- Create scripts for all manual tasks(if possible), avoiding any hand typing mistakes during
day of deployment.
- Test the script to make sure they work on a non-production environment.
- Keep the build artifacts ready. e.g application deployment files, database scripts, config
files etc.
- Create a checklist of things to do on day of deployment.
- Rehearse. Deploy in a non-prod environment is almost identical to production. Try this
with production data volumes(if possible). Make a note of time required for your tasks so you
can plan accordingly.
When doing deploying on a production environment.
- Keep backup of current site/data to be able to rollback.
- Use sanity test cases before doing a lot of in depth testing.
52.Explain J2EE architecture.
The JEE platform provides the environment to develop enterprise applications /
services using multitier architecture. The highly intensified technology made the need
for scalable, efficient, faster solutions for information management. The JEE technology
is rightly apt for meeting these requirements. JEE provides a programming development
environment which improves the productivity of development, standards for hosting /
deploying enterprise applications.
The following are the tiers in JEE application
Client Tier: The client tier includes the web components such as Servlets, JSP or
standalone Java Desktop applications. This tier provides dynamic interfaces to the
middle tier.
- Middle Tier: This also called as the server tier. In the middle tier enterprise
beans and web services encapsulate distributable business logic for the applications
which are reusable. The JEE application server contains the server-tier components
which provides the platform for these web components for actions to be performed and
data to be stored / persisted.
- Enterprise data tier: The enterprise level data is stored / persisted preferably or
typically in a relational database, in this tier.
The JEE applications comprises of components, containers and services. All the web
components (Servlets, JSP) provide dynamic requests and responses from a web page.
The EJB components contain the server-side business logic for enterprise applications.
53.J2EE is a container centric architecture. Explain.
A container acts as an interface between a platform-specific functionality and a
component. The component must be assembled before a web or enterprise bean or
application client component execution, into a JEE application and deployed into its
container.
The settings of a container can be customized for underlying support provided by the
JEE server. These include security, transaction management, and Java Naming and
Directory Interface lookups.
The management of non-configurable services such as servlet life cycle, enterprise
bean life cycle, database connection, data persistence, database connection pooling
also can be done by the container.
54.Explain the four types of container that the J2EE specification defines.
A container is a runtime support of a system level entity [Applet, Servlet/JSP, EJB]
The four types of container that the J2EE specification defines are applet container,
application-client container, web container and EJB container.
Applet Container : An applet is a java program that can be embedded into a web page.
Most of the web pages are authored in HTML. To use an applet in HTML document ,
the tags <APPLET> and </APPLET> are used. They are used to indicate to the browser
that a java applet should be loaded. “These tags act as a container for the java applet
definition. “ Applet container manages the execution of applet, and contains the web
browser.
Application-client Container : The Application Client Container (ACC) is a combination
of Java classes, libraries, and other files. They are used to distribute along with Java
client programs that execute on their own JVM. The execution of the application client
components is managed by the application-client container. The ACC can take the
responsibility to collect user name and password which is treated as authentication
data.
Web Container : A web container is a part of web server. It provides the run time
environment to execute a web application such as a servlet, JSP. A servlet container
translates the URL requests into servlet requests. The JSP implicit objects such as
request, response, out, page, pageContext etc., are exposed by JSP container.
EJB Container : The EJB container, like other containers provides run-time environment
to execute EJB components such as enterprise beA: An EJB Container manages
transactions, state management details, multi threading, connection pooling. The
applications are provided with security using EJB container. All database access
required by the entity bean will be handled by the EJB container.
55.Explain the J2EE container architecture.
J2EE Container Architecture:
The J2EE application components needs support at runtime. This support is provided
by J2EE containers. They use protocols, methods of the containers to access other
application components. The containers of J2EE are 1) Web container 2) EJB
container.
1) The web container is used to host web applications. It provides the run time
environment to execute Servlet and JSP component types.
2) The business logic is dealt by the server components called EJB components. The
access to local and remote enterprise beans is provided by the EJB container. The
operations of the three beans namely Entity Bean, Session Bean and Message-driven
bean are handled by the EJB Container.
56.Explain the technologies that J2EE platform provides for developing
components.
1) Servlet Technology: It is considered as the foundation of web technologies. It
overcomes the limitations of CGI technology. It is a server side component to serve the
clients and to generate dynamic content. Servlets interacts with web clients using the
paradigm ‘request-response’. All client requests are sent through web servers to the
servlet container. The servelt then process the request and sends the response back to
the client. Servlets are reliable, scalable, efficient and reusable server side components.
2) JSP Technology: It is the extension of servlet technology. It is easy to author JSP
without much knowledge of the supporting API. JSP can be used to work with HTTP
requests and HTTP responses, session management and so on. It is easy to combine
both static and dynamic content with JSP. The factor to develop JSP technology is to
use regular HTML tags. The JSP author can place servlet or simple java code in the
page by using special designated tags. The entire JSP will be translated into Servlet
and the servlet related code is communicated to container to run.
3) EJB Technology: EJB is a server-side web component. It depends on other Java
technologies for proper functionality such as Remote Method Invocation. RMI is used as
a protocol between 2 enterprise beans and between an enterprise bean and its client.
EJB encapsulates the business logic. All EJBs are developed, deployed and run only in
an EJB container. This is similar to servlets and JSP run in a web container.
EJB applications are easy to develop because the applications developer can
concentrate on business logic. The developer can utilize the services provided by the
EJB container, like connection pooling and transactions.
57.Explain the J2EE APIs, i.e. RMI/IIOP, JNDI, JDBC, Java Mail and JMS.
RMI/IIOP: RMI stands for Remote Method Invocation. IIOP stands for Inter
Internet-ORB Protocol. ORB
RMI/IIOP API is used to write distributed objects using Java technology, which enables
communication between objects in the memory, across JVM and also physical devices.
RMI/IIOP yields the benefits of OOP such as inheritance, polymorphism and
encapsulation and is platform independent. In RMI/IIOP, the code related to network is
written by applying the interface but not the implementations. The operation can solely
on the interface that object’s class.
RMI-IIOP relies on object serialization for passing parameters via remote method
invocations.
JNDI ( Java Naming and Directory Interface) API : To enable java programs to access
the naming and directory services, the JNDI API is utilized. Naming services
emphasizes on the services that are to associate names with objects.
We are familiar with naming systems such as the file system which has a directory or
path associated it. Surfing web is associated a name that is the URL called Domain
Naming System. EJB components of a J2EE application server , user profiles are
associated in LDAP(Lightweight Directory Access Protocol) directory.
For example , JNDI is the best API to write a java application that is used for search
utility over network-enabled desktop, class-browser or an address book search utility.
JDBC(Java Database Connectivity) API : Many java applications use a database and
database accessing and programming is a significant role in web application
development. JDBC is an API that enables the accessibility to a database in order to
manipulate the database.
The JDBC API supports both two-tier and three-tier models for database access.
Two-tier model -- a Java application interacts directly with the database.
Three-tier model -- introduces a middle-level server for execution of business logic: the
middle tier to maintain control over data access.
The application that uses the JDBC implements the following sequence.
1. Importing Packages
2. Registering the JDBC Drivers
3. Opening a Connection to a Database
4. Creating a Statement Object
5. Executing a query and Returning a Result Set Object
6. Processing the Result Set
7. Closing the Result Set and Statement Objects
8. Closing the Connection
Java Mail API: Mailing and Messaging applications can be modelled or developed using
Java Mail. The e-mail messaging applications can be developed for both high-level
implementation and low-level implementation. That is, a small company which is
heading towards growth can develop solutions which ensures the accessing to their
mail server in an efficient manner. A blue-chip company can focus on providing the
access to industry-level access which is a wider reach and provides vast support.
JMS: Java Message Services is an API that enables the components of an application,
could it be JSE or JEE component to provide messaging services such as create, send,
receive and read messages. Using the loosely coupled, reliable and asynchronous
communications are enabled by JMS.
The JMS application contains the following parts :
1.JMS Provider : It implements the JMS interface and provides the administration and
control services for the messages. J2EE 1.3 includes the JMS Provider service.
2.JMS Clients : These are the java applications that produces or consumes the
messages.
3. Messages : These are the objects that communicate the messages between clients.
4. Administered Objects : They are the JMS objects created by the administrator that
can be used by the clients. They are namely destinations and connection factories.
5. Native Clients :These are the applications that use message client’s native client API
instead of JMS API.
58.What are the 3 different Java platform editions? Explain them.
Java 2 Platform, Standard Edition (J2SE)
Java 2 Platform, Enterprise Edition (J2EE)
Java 2 Platform, MicroEdition (J2ME)
Java 2 Platform, Standard Edition (JSE): J2SE is used to develop stand alone / desktop
portable java applications. J2SE consists of two components. Core component and
desktop component. Core component provides back end functionality. Desktop
component provides GUI functionality. J2SE consists of Java Development Kit and Java
Runtime Environment. JDK consists of java compiler and other related tools to enable
the users to create Java Applications. Java Runtime Environment consists of java virtual
machine, libraries and all other components that are necessary to run a java application.
Java 2 Platform, Enterprise Edition (JEE): J2EE is a platform to develop multi-tier
enterprise applications. JEE includes Servlets API, Java Server Pages and Enterprise
Java BeA: It was built on J2SE technology.
Java 2 Platform, Micro Edition (JME): JME is the technology for micro electronic devices
like PDAs, Mobile phones etc. JME supports the flexibility for user interfaces, provides
the security and uses the built-in network protocols for networked applications.JME
applications can be ported across different devices.
59.Provide an overview of web container.
The web container is used to implement the web components functionality. The
functionality specifies an environment, called as runtime environment which the web
components security, deployment, life-cycle management transaction management,
request-response services. A container manages the servlet / JSP/ EJB functionality.
J2EE server runs the components and the containers. A web container will also manage
the database connection pooling, data persistence and access to the J2EE API.
Explain the Java Servlet programming model.
The servlets are server side components in a web application. These components
platform independent and on any server as the java technology is platform
independence. The servlets are dynamically loaded by the JRE of servlets. When a
request is received from a client the web container / web server will ignite the servlet.
The servlet processes the request the sends the response back to the container / web
server which in turn sends the response back to the client.
Describe in brief about deployment descriptors.
A deployment descriptor describes the configuration information to deploy a web
application. For a web application, it directs the deployment tool that is to deploy a
module for a specific container such as ejb container / servlet/jsp container. For web
applications the deployment descriptor is web.xml and must be placed in a WEB-INF
directory of a web application root directory. For EE deployment descriptor the name
should be application.xml and must be placed in a META-INF directory at the top level
of the application .ear file.
60.Explain the J2EE container architecture.
J2EE Container Architecture:
The J2EE application components needs support at runtime. This support is provided
by J2EE containers. They use protocols, methods of the containers to access other
application components. The containers of J2EE are 1) Web container 2) EJB
container.
1) The web container is used to host web applications. It provides the run time
environment to execute Servlet and JSP component types.
2) The business logic is dealt by the server components called EJB components. The
access to local and remote enterprise beans is provided by the EJB container. The
operations of the three beans namely Entity Bean, Session Bean and Message-driven
bean are handled by the EJB Container.
J2EE Components:
Application components:
Every JEE application is made up of different components. A component can be defined
as software that is self-contained functionality that is a part of JEE application related in
terms of classes, files and perform communication with other components. The JEE
components are
• Applets, Application clients are client components
• Servlets and JSP technologies are referred as web components
• The EJB components that comprise enterprise beans are referred as business
components.
JEE components are authored using java programming language and compiled just like
a simple java desktop applications. JEE components are deployed according to the
production requirement and managed by the JEE server.
JEE containers:
All JEE components are installed in the respective containers while deploying the web
applications. All the components are supposed to be assembled into a JEE application
and then deployed in the respective container, before the execution of a web, an
enterprise bean or even application client component execution.
Container Types
The deployment process is container specific.
- An EJB container manages the execution of all enterprise beans for a specific
JEE application. The enterprise beans and their container will be run on JEE server.
- A web container is responsible for the execution of all servlets components
and JSP for a specific JEE web application. These web components and the
corresponding container will be run on JEE server.
- The execution of all application client components for a JEE applications is
managed / executed by an application client container. The application clients and their
applications run on the client machines.
- A container by name applet container is a web browser. The applet container
along with Java plug-in combination runs on the client machine.
JEE API:
In order to run all the JEE SDK for web applications, the JSE SDK is needed. The JSE
SDK provides the entire required core API for writing JEE components and the JVM.
The following are the JEE APIs that are to be used in JEE applications.
- EJB API - This API enables the fast, simplified distributed application
development at enterprise level.
- JDBC API – Enables the relational database accessibility for java applications
- Servlet API – Provides simple consistent mechanism to manage the
application at web server level.
- JSP API - Provides simple and fastest dynamic web page development
- JMS API – Provides the mechanism for simple messaging services
- Java Transaction API – An interface between transaction manager and the
others involved in distributed transaction system.
- Java Mail API – Provides platform and protocol independent mailing services
|