-
What are the two
important TCP Socket
classes? - Socket
and ServerSocket.
ServerSocket is used for
normal two-way socket
communication. Socket
class allows us to read
and write through the
sockets. getInputStream()
and getOutputStream()
are the two methods
available in Socket
class.
-
What technologies are
included in J2EE? -
The primary technologies
in J2EE are: Enterprise
JavaBeansTM (EJBsTM),
JavaServer PagesTM (JSPsTM),
Java Servlets, the Java
Naming and Directory
InterfaceTM (JNDITM),
the Java Transaction API
(JTA), CORBA, and the
JDBCTM data access API.
-
What is the Java
Authentication and
Authorization Service (JAAS)
1.0? - The Java
Authentication and
Authorization Service (JAAS)
provides a way for a
J2EE application to
authenticate and
authorize a specific
user or group of users
to run it. JAAS is a
Java programing language
version of the standard
Pluggable Authentication
Module (PAM) framework
that extends the Java 2
platform security
architecture to support
user-based
authorization.
-
What’s the difference
between JNDI lookup(),
list(), listBindings(),
and search()? -
lookup() attempts to
find the specified
object in the given
context. I.e., it looks
for a single, specific
object and either finds
it in the current
context or it fails.
list() attempts to
return an enumeration of
all of the
NameClassPair’s of all
of the objects in the
current context. I.e.,
it’s a listing of all of
the objects in the
current context but only
returns the object’s
name and the name of the
class to which the
object belongs.
listBindings() attempts
to return an enumeration
of the Binding’s of all
of the objects in the
current context. I.e.,
it’s a listing of all of
the objects in the
current context with the
object’s name, its class
name, and a reference to
the object itself.
search() attempts to
return an enumeration of
all of the objects
matching a given set of
search criteria. It can
search across multiple
contexts (or not). It
can return whatever
attributes of the
objects that you desire.
It’s by far the most
complex and powerful of
these options but is
also the most expensive.
-
Components of JNDI
- Naming Interface- The
naming interface
organizes information
hierarchically and maps
human-friendly names to
addresses or objects
that are
machine-friendly. It
allows access to named
objects through multiple
namespaces. Directory
Interface - JNDI
includes a directory
service interface that
provides access to
directory objects, which
can contain attributes,
thereby providing
attribute-based
searching and schema
support. Service
Provider Interface -
JNDI comes with the SPI,
which supports the
protocols provided by
third parties.
-
What is the Max
amount of information
that can be saved in a
Session Object? - As
such there is no limit
on the amount of
information that can be
saved in a Session
Object. Only the RAM
available on the server
machine is the
limitation. The only
limit is the Session ID
length(Identifier),
which should not exceed
more than 4K. If the
data to be store is very
huge, then it’s
preferred to save it to
a temporary file onto
hard disk, rather than
saving it in session.
Internally if the amount
of data being saved in
Session exceeds the
predefined limit, most
of the servers write it
to a temporary cache on
Hard disk.
-
Must my bean-managed
persistence mechanism
use the WebLogic JTS
driver? - BEA
recommend that you use
the TxDataSource for
bean-managed
persistence.
-
Do EJBs have to be
homogeneously deployed
across a cluster? Why?
- Yes. Beginning with
WebLogic Server version
6.0, EJBs must be
homogeneously deployed
across a cluster for the
following reasons:
-
To keep clustering
EJBs simple
-
To avoid cross
server calls which
results in more
efficiency. If EJBs
are not deployed on
all servers, cross
server calls are
much more likely.
-
To ensure that every
EJB is available
locally
-
To ensure that all
classes are loaded
in an undeployable
way
-
Every server must
have access to each
EJB’s classes so
that it can be bound
into the local JNDI
tree. If only a
subset of the
servers deploys the
bean, the other
servers will have to
load the bean’s
classes in their
respective system
classpaths which
makes it impossible
to undeploy the
beans.
-
Is an XSLT processor
bundled in WebLogic
Server? - Yes, an
XSLT processor, based on
Apache’s Xalan 2.0.1
processor, in WebLogic
Server 6.1.
-
I plugged in a
version of Apache Xalan
that I downloaded from
the Apache Web site, and
now I get errors when I
try to transform
documents. What is the
problem? - You must
ensure that the version
of Apache Xalan you
download from the Apache
Web site is compatible
with Apache Xerces
version 1.3.1. Because
you cannot plug in a
different version of
Apache Xerces , the only
version of Apache Xerces
that is compatible with
WebLogic Server 6.1 is
1.3.1. The built-in
parser (based on version
1.3.1 of Apache Xerces)
and transformer (based
on version 2.0.1 of
Apache Xalan) have been
modified by BEA to be
compatible with each
other.
-
How do I increase
WebLogic Server memory?
- Increase the
allocation of Java heap
memory for WebLogic
Server. (Set the minimum
and the maximum to the
same size.) Start
WebLogic Server with the
-ms32m option to
increase the allocation,
as in this example:
$ java ... -ms32m -mx32m ...
This allocates 32
megabytes of Java heap
memory to WebLogic
Server, which improves
performance and allows
WebLogic Server to
handle more simultaneous
connections. You can
increase this value if
necessary.
-
What causes Java.io
exceptions in the log
file of WebLogic Server?
- You may see messages
like these in the log
file:
(Windows NT)
java.io.IOException Connection Reset by Peer
java.io.EOFException Connection Reset by Peer
(Solaris)
java.io.Exception: Broken pipe
These messages occur
when you are using
servlets. A client
initiates an HTTP
request, and then
performs a series of
actions on the browser:
The messages indicate
that WebLogic Server has
detected and recovered
from an interrupted HTTP
request.
-
What is the function
of T3 in WebLogic
Server? - T3
provides a framework for
WebLogic Server messages
that support for
enhancements. These
enhancements include
abbreviations and
features, such as object
replacement, that work
in the context of
WebLogic Server clusters
and HTTP and other
product tunneling. T3
predates Java Object
Serialization and RMI,
while closely tracking
and leveraging these
specifications. T3 is a
superset of Java Object.
Serialization or RMI;
anything you can do in
Java Object
Serialization and RMI
can be done over T3. T3
is mandated between
WebLogic Servers and
between programmatic
clients and a WebLogic
Server cluster. HTTP and
IIOP are optional
protocols that can be
used to communicate
between other processes
and WebLogic Server. It
depends on what you want
to do. For example, when
you want to communicate
between a browser and
WebLogic Server-use
HTTP, or an ORB and
WebLogic Server-IIOP.
-
What are the
enhancements in EJB 2.0
specification with
respect to Asynchronous
communication? - EJB
2.0 mandates integration
between JMS and EJB. We
have specified the
integration of
Enterprise JavaBeans
with the Java Message
Service, and have
introduced
message-driven beans. A
message-driven bean is a
stateless component that
is invoked by the
container as a result of
the arrival of a JMS
message. The goal of the
message-driven bean
model is to make
developing an enterprise
bean that is
asynchronously invoked
to handle the processing
of incoming JMS messages
as simple as developing
the same functionality
in any other JMS
MessageListener.
-
What are the
enhancements in EJB 2.0
with respect to CMP?
- EJB 2.0 extends CMP to
include far more robust
modeling capability,
with support for
declarative management
of relationships between
entity EJBs. Developers
no longer need to
re-establish
relationships between
the various beans that
make up their
application — the
container will restore
the connections
automatically as beans
are loaded, allowing
bean developers to
navigate between beans
much as they would
between any standard
Java objects.
EJB 2.0 also introduces
for the first time a
portable query language,
based on the abstract
schema, not on the more
complex database schema.
This provides a database
and vendor-independent
way to find entity beans
at run time, based on a
wide variety of search
criteria.
-
Can you briefly
describe local
interfaces? - EJB
was originally designed
around remote invocation
using the Java Remote
Method Invocation (RMI)
mechanism, and later
extended to support to
standard CORBA transport
for these calls using
RMI/IIOP. This design
allowed for maximum
flexibility in
developing applications
without consideration
for the deployment
scenario, and was a
strong feature in
support of a goal of
component reuse in J2EE.
Many developers are
using EJBs locally -
that is, some or all of
their EJB calls are
between beans in a
single container. With
this feedback in mind,
the EJB 2.0 expert group
has created a local
interface mechanism. The
local interface may be
defined for a bean
during development, to
allow streamlined calls
to the bean if a caller
is in the same
container. This does not
involve the overhead
involved with RMI like
marshalling etc. This
facility will thus
improve the performance
of applications in which
co-location is planned.
Local interfaces also
provide the foundation
for container-managed
relationships among
entity beans with
container-managed
persistence.
-
What are the special
design care that must be
taken when you work with
local interfaces? -
It is important to
understand that the
calling semantics of
local interfaces are
different from those of
remote interfaces. For
example, remote
interfaces pass
parameters using
call-by-value semantics,
while local interfaces
use call-by-reference.
This means that in order
to use local interfaces
safely, application
developers need to
carefully consider
potential deployment
scenarios up front, then
decide which interfaces
can be local and which
remote, and finally,
develop the application
code with these choices
in mind. While EJB 2.0
local interfaces are
extremely useful in some
situations, the
long-term costs of these
choices, especially when
changing requirements
and component reuse are
taken into account, need
to be factored into the
design decision.
-
What happens if
remove( ) is never
invoked on a session
bean? - In case of a
stateless session bean
it may not matter if we
call or not as in both
cases nothing is done.
The number of beans in
cache is managed by the
container. In case of
stateful session bean,
the bean may be kept in
cache till either the
session times out, in
which case the bean is
removed or when there is
a requirement for memory
in which case the data
is cached and the bean
is sent to free pool.
-
What is the
difference between
creating a distributed
application using RMI
and using a EJB
architecture? - It
is possible to create
the same application
using RMI and EJB. But
in case of EJB the
container provides the
requisite services to
the component if we use
the proper syntax. It
thus helps in easier
development and lesser
error and use of proven
code and methodology.
But the investment on
application server is
mandatory in that case.
But this investment is
warranted because it
results in less complex
and maintainable code to
the client, which is
what the end client
wants. Almost all the
leading application
servers provide load
balancing and
performance tuning
techniques. In case of
RMI we have to code the
services and include in
the program the way to
invoke these services.
-
Why would a client
application use JTA
transactions? - One
possible example would
be a scenario in which a
client needs to employ
two (or more) session
beans, where each
session bean is deployed
on a different EJB
server and each bean
performs operations
against external
resources (for example,
a database) and/or is
managing one or more
entity beans. In this
scenario, the client’s
logic could required an
all-or-nothing guarantee
for the operations
performed by the session
beans; hence, the
session bean usage could
be bundled together with
a JTA UserTransaction
object. In the previous
scenario, however, the
client application
developer should address
the question of whether
or not it would be
better to encapsulate
these operations in yet
another session bean,
and allow the session
bean to handle the
transactions via the EJB
container. In general,
lightweight clients are
easier to maintain than
heavyweight clients.
Also, EJB environments
are ideally suited for
transaction management.
Context c = new InitialContext();
UserTransaction ut = (UserTransaction)
c.lookup(\"java:comp/UserTransaction\");
ut.begin();
// perform multiple operations...
ut.commit() ...
-
Can the bean class
implement the EJBObject
class directly? If not
why? - It is better
not to do it will make
the Bean class a remote
object and its methods
can be accessed without
the containers?
security, and
transaction
implementations if our
code by mistake passed
it in one of its
parameters. Its just a
good design practice.
-
What does isIdentical()
method return in case of
different type of beans?
- Stateless - true
always. Stateful -
depends whether the
references point to the
same session object.
Entity - Depends whether
the primary key is the
same and the home is
same.
-
How should you type
cast a remote object?
Why? - A client
program that is intended
to be interoperable with
all compliant EJB
Container
implementations must use
the
javax.rmi.PortableRemoteObject.narrow(…)
method to perform
type-narrowing of the
client-side
representations of the
remote home and remote
interfaces. Programs
using the cast operator
for narrowing the remote
and remote home
interfaces are likely to
fail if the Container
implementation uses
RMI-IIOP as the
underlying communication
transport.
-
What should you do in
a passive method? -
You try to make all
nontransient variables,
which are not one of the
following to null. For
the given list the
container takes care of
serializing and
restoring the object
when activated.
Serializable objects,
null, UserTransaction,
SessionContext, JNDI
contexts in the beans
context, reference to
other beans, references
to connection pools.
Things that must be
handled explicitly are
like a open database
connection etc. These
must be closed and set
to null and retrieved
back in the activate
method.