Friday, April 3, 2009

Jboss interview Questions

Q:What's the difference between Hibernate and EJB 3 ? Don't you think EJB 3 is just a clone of Hibernate ?

The perception of EJB3 as being a simple clone of Hibernate is primarily based on developer familiarity with Hibernate and a similarity of naming, as well as common purpose, and that Hibernate is morphing itself into an EJB3 implementation based on the work going into the specification, not the other way around.

EJBs are supposed to be components, in the sense that they're not just one class, but a set of classes, descriptors and usage and management contracts. All of this in order to allow a container (JBoss,
Weblogic, etc.) to provide services to those components, and to be able to reuse and distribute this components. This services are, among others, transactions, concurrent access control, security, instance pooling, etcetera.
Hibernat is "just" an ORM (Object/Relational Mapping) tool. Quick and dirty, this means you can store an object tree belonging to an class hierarchy in a relational DB without writing a single SQL query. Quite cool, IMO. But no transaction control, no instance pooling, no concurrency control, and certainly no security.

Q:Which Hibernate object wraps the JDBC Connection ?

The Session interface wraps a JDBC Connection. This interface is a single threaded object which represents a single unit of work with application and persistent database. It's retrieved by the SessionFactory's openSession() method

Q:Ok, is the Session Factory Thread safe?

Yes: that is many threads can access it cuncurrentely and request for sessions. It holds cached data that has been read in one unit of work and may be reused in a future unit of work. Good practice is to create it when the application is initialized.
Q:How can you start a JTA transaction from a Servlet deployed on JBoss ?

JBoss registers in the JNDI tree a JTA UserTransaction Object which can be user to manage a distributed transaction.

Q:What if you need to span your transaction across multiple Servlet invocations ?
You can't with a Servlet. A JTA transaction must start and finish within a single invocation (of the service() method). You should consider using a Stateful SB. In a SFSB with a JTA transaction, the association between the bean instance and the transaction is retained across multiple client calls.
Q:What are the differences between EJB 3.0 and EJB 2.0 ?

EJBs are now plain old Java objects (POJO) that expose regular business interfaces (POJI), and there is no requirement for home interfaces.

* Use of metadata annotations, an extensible, metadata-driven, attribute-oriented framework that is used to generate Java code or XML deployment descriptors.
* Removal of the requirement for specific interfaces and deployment descriptors (deployment descriptor information can be replaced by annotations).
* Interceptor facility to invoke user methods at the invocation of business methods or at life cycle events.
* Default values are used whenever possible (“configuration by exception” approach).
* Reduction in the requirements for usage of checked exception.
* A complete new persistence model (based on the JPA standard), that supersedes EJB 2.x entity beans

Q:What is the diffrence between a local-tx-datasource and a xa-datasource? can you use transactions in both ?

A local-tx-datasource identifies a data source that uses transactions, even distributed trans-
actions within the local application server, but doesn’t use distributed transactions among multiple application servers. An xa-datasource on the other hand identifies a data source that uses distributed transaction among multi-ple application servers.

Q:What do you need to set-up a cluster with JBoss ?


Basically starting JBoss with the “all” configuration contains everything needed for clustering:
It has all the libraries for clustering:

* JGroups.jar, jboss-cache.jar
* Clustered beans (cluster-service.xml)
* HA-JNDI
* HTTP session replications (tc5-cluster-service.xml)
* Farming
* HA-JMS

Q:What optimization could I use if the EJB container is the only point of write access to the database ?

You could activate the "Commit Option A" that is the container caches entity bean state between transactions. This option assumesthat the container has exclusive access to the persistentstore and therefore it doesn’t need to synchronizethe in-memory bean state from the persistent store at the beginning of each transaction.
Q:Which component handles cluster communication in JBoss ?

The JGroups framework provides services to enable peer-to-peer communications between nodes in a cluster. It is built on top a stack of network communication protocols that provide transport, discovery, reliability and failure detection, and cluster membership management services.

Q:Is it possible to put a JBoss server instance into multiple cluster at the same time ?

It is technically possible to put a JBoss server instance into multiple clusters at the same time, this practice is generally not recommended, as it increases the management complexity.
Q:What's jBoss cache in short ?

JBossCache enables easy distribution of datasets across your computing environments. It is based on JGroups and enables clustering and high availability of that data. You may choose to distribute the data with JBoss Messaging to move it where it is needed for computation or event-based programming

Q:What do you know about Seam ?

Built on the standards JavaServer Faces and EJB 3.0, JBoss Seam unifies component and programming models and delivers a consistent and powerful framework for rapid creation of web applications with Java EE 5.0. Seam simplifies web application development and enables new functionality that was difficult to implement by hand before, such as stateful conversations, multi-window operation, and handling concurrent fine-grained AJAX requests. Seam also unifies and integrates popular open source technologies like Facelets, Hibernate, iText, and Lucene.

Q:Does Seam run on other application servers besides JBoss ?

Seam runs beautifully on other application servers - just like everything else the Hibernate team does, this is not a JBoss-only thing.

Q: Which JDK is needed to run Seam?


Seam only works on JDK 5.0 and above. It uses annotations and other JDK 5.0 features.

Q:How would you convince my IT department to adopt SOA ?

In my opinion one of the biggest obstacle in the movement towards SOA adoption is the organization’s own IT department.Too many people in the IT organization conceive SOA as a technology concept only, and as such think of SOA as just a set of technologies and infrastructure for exposing, securing, running, and managing Services. Put it this way, SOA is nothing more than Web Services and standardized middleware. The critical flaw in thinking is confusing the technology that sits beneath the Services level of abstraction and the mechanism by which Services are accessed with the architectural approach that aims to decouple the implementation from the consumption and focus on sustainable architecture that allows for continuous change.

Successful SOA adoption requires a cultural shift in the way IT is done. The Service-oriented movement to agility and loose coupling demands a shift from traditional, waterfall styles of development (design-build-test-deploy-manage) to iterative approaches to continuous Service modeling

In a Service-oriented environment, governance moves from nice addon to an absolute requirement prior to the developement of the first Service. Security considerations shift from network boundaries to become context-specific, message-driven, and federated. And of course, the modus operandi of IT as a whole moves from focusing on the short-term project management to meeting the long-term sustainable needs of the business as it changes.


Q:What's JBoss JBPM ?

JBoss jBPM is a platform for process languages. At the base there is a java library to define and execute graphs. The actual process constructs like e.g. send email, user task and update database are defined on top of this. Every process language is made up of a set of such process constructs. And that is what is pluggable in this base library. On top of the JBoss jBPM base library, there are implemented several process languages as a set of process constructs: jPDL, BPEL and SEAM pageflow:

* jPDL is a process language with a clean interface to Java and very sophisticated task management capabilities. There is no standard for Java process languages, so it is proprietary.
* BPEL is a service orchestration language. As said before, in BPEL, you can write new services as a function of other services. This is typically a component of an Enterprise Service Bus (ESB).
* SEAM pageflow is a language that allows for the graphically define the navigation between pages in a SEAM web application.


Q:What do you think about BPEL and BPM ? How do they compare?

In my opinion BPEL and BPM are quite different things so they cannot even be compared. The problems boils down to the fact that these years maybe BPEL has been marketed for something which isn't: that is a Business Process Management framework.
BPEL is made up for service orchestration, that is publishing new services as a function of other services.
while BPM si needed for handling human task management functionalities and subprocess management.
Q:How do you monitor JBoss and detect the bottleneck of an application?

The first step is to measure the different components of your app to see where the degradation is. Is it an external resource (database, message server, etc.)? Is it internal? Where is the app spending all its time?
So the first step could be to to use JBoss JMX agents and monitor the components deployed to the application server. Once it's clear which component or library takes most of the time or most of resource you can use a more specialized tool like JProbe and examine the single method or the single objects loaded in memory.
Q:If you have defined a web service that needs to transfer quite a lot of information, how would you do ?

You might consider using an attachment to transfer the information.Jboss JAX-WS Web services provides Attachment support with MTOM (Message Transmission Optimization Mechanism) SOAP.
Q:What's the difference between JAX-WS and JAX-RPC ?

Java API for XML-Based RPC (JAX-RPC) is a Legacy Web Services Java API, it uses SOAP and HTTP to do RPCs over the network and enables building of Web services and Web applications based on the SOAP 1.1 specification, Java SE 1.4 or lower.JAX-WS 2.0 is the successor to JAX-RPC 1.1. JAX-WS still supports SOAP 1.1 over HTTP 1.1, so interoperability will not be affected. However there are lots of differences:

* JAX-WS maps to Java 5.0 and relies on many of the features new in Java 5.0 like Web Service annotations.
* JAX-RPC has its own data mapping model, JAX-WS's data mapping model is JAXB. JAXB promises mappings for all XML schemas.
* JAX-WS introduces message-oriented functionality, dynamic asynchronous functionality which are missing in JAX-RPC.
* JAX-WS also add support, via JAXB, for MTOM, the new attachment specification.

Q:Do you know how you could add support for Web Service transactions ?

JBossTS supports Web Services transactions, including extended transaction models designed specifically for loosely-coupled, long running business processes. J2EE transactions can integrate seamlessly with Web Services transactions using our integrated, bi-directional transaction bridge. Interoperability with many other vendors is provided out-of-the-box and JBoss is an active participant in these standards.


No comments:

Post a Comment