JAVA SERVER SIDE/ J2EE(SERVLETS/ JSP /RMI/EJB/JMS)
SERVLETS
Q. How do you communicate between applet and servlet?
Answer: Through Http Tunneling
Q. What is the use of servlets?
Q. What is the use of servlets?
Answer: The Servlets are server side java programs, which are used to generate dynamic web content for a web clients. They reside inside a servlet container on a web server or an application server. The servlet container provides them a runtime environment.
Q. How will you pass values from HTML to the servlet?
Q. How will you pass values from HTML to the servlet?
Answer: The values from an HTML page are passed to a servlet either through a GET or POST method. In a servlet, request.getParameter (“strParam”) method is called in order to retrieve values from HTML form to a servlet end where String strParam represents the name of the input type OR values can be passed concatenated with URL itself which request the servlets receive.
Q. What is the difference between CGI and servlets?
Q. What is the difference between CGI and servlets?
Answer: In traditional CGI, a new process is started with each client request and this will correspond to initiating a heavy OS level process each time when a client request comes. While in case of servlets JVM handles client requests at a web server end and each client request correspond to thread which consumes less resources as compared with CGI process, thus making CGI inefficient. In Java servlet, there is only a single instance, which answers all requests concurrently. This saves memory and allows a Servlet to easily manage persistent data.
A Java servlet can straightaway talk with a web server while in case of CGI it is not possible unless server specific API have not been used.
Java servlets are portable and inexpensive.
Java servlets resides in Servlet engine and are executed within sandbox making it more secure and robust.
Q. What is client server computing?
A Java servlet can straightaway talk with a web server while in case of CGI it is not possible unless server specific API have not been used.
Java servlets are portable and inexpensive.
Java servlets resides in Servlet engine and are executed within sandbox making it more secure and robust.
Q. What is client server computing?
Answer: The client server computing means expediting a client’s requests through a remotely located server. A client accesses a remote server through an interface (may be an application or browser based client interface) using web related technologies specific to several vendors viz. Microsoft, Sun, OMG etc.
Q. What is a middleware and what is the functionality of Webserver?
Q. What is a middleware and what is the functionality of Webserver?
Answer: A middleware in a 3-tier architecture sits in the middle of a client’s machine and a database server. A middleware is where all the business related logic resides and it is also known as Web Application Server. (e.g. WebLogic from BEA, WebSphere from IBM, Oracle 9iAS from Oracle etc.)In distributed programming divide and rule is the name of the game and in this paradigm a middleware has a good share of responsibilities viz. load balancing, database connection pooling, security, transaction management related services, web and enterprise component deployment services, content management related services etc.
Q. What is meant by Session tell me something about HttpSession?
Q. What is meant by Session tell me something about HttpSession?
Answer: A web client makes a request to a web server over HTTP. As long as a client interacts with the server through a browser on his or her machine is called as session. HTTP is a stateless protocol. A client’s each request is treated as a fresh one with no info of client to the server and the moment browser is closed, session is also closed. In an online shopping or web cart kind of application where session related information is critical for successive purchases made by a client, there have been suggested several techniques for session tracking in Java Servlets as mentioned below:• Hidden form fields• URL Rewriting• Cookies• HttpSession objectHttpSession is an interface, which belongs to javax.servlet.http. * package This provides a facility to identify a user across the several pages’ requests.Looking up the HttpSession object associated with the current request.This is done by calling the getSession method of HttpServletRequest. If this returns null, you can create a new session, but this is so commonly done that there is an option to automatically create a new session if there isn't one already. Just pass true to getSession. Thus, your first step usually looks like this: HttpSession session = request.getSession (true);
Q. How do you invoke servlets what is the difference in between doGet and doPost?
Q. How do you invoke servlets what is the difference in between doGet and doPost?
Answer:
1) Servlets can be explicitly accessed with the URL:
http://server:8080/servlet/ServletName
where server is the name of the server or localhost if the server is running on your local machine and ServletName is the name of your servlet class name.
2) Run the web server administration tool and associate an arbitrarily chosen name with the servlet class name. This name is sometimes called the "registered" servlet name. For example, you could associate "MyName" with your servlet class name and you would invoke the servlet with the URL:
http://server:8080/servlet/MyName
3) Run the web server administration tool and set up an alias for a URL so that when that when that URL is accessed, a specific servlet is invoked. For example, you can alias the following URL to invoke a servlet:
http://server:8080/anyurl
Aliases are useful if you’re replacing existing HTML pages with servlets. You can keep the URLs the same; they’ll invoke servlets instead of displaying the HTML.
Difference between doGet and doPost Sending a GET or POST request to it in order to expedite the request by calling corresponding doGet() and doPost() methods.
doGet is called in response to an HTTP GET request. This happens when users click on a link, or enter a URL into the browser's address bar. It also happens with some HTML FORMs (those with METHOD="GET" specified in the FORM tag). doPost is called in response to an HTTP POST request. This happens with some HTML FORMs (those with METHOD="POST" specified in the FORM tag).
Both methods are called by the default (superclass) implementation of service in the HttpServlet base class. You should override one or both to perform your servlet's actions. You probably shouldn't override service().
There is a restriction of numbers of parameters to be sent through doGet method around 2k of data can be sent and moreover whole of URL is to be mentioned in case of doGet as mentioned below:http://www.spearheadit.com/servlet?param1=value1¶m2=value2&...¶mN=valueNSo it is always better to use doPost() when sending parameters from a FORM as it doesn’t show off information related with password on the network etc.
Q. What is the difference between GenericServlet and HTTPServlet? Explain their methods? Tell me their parameter names also?
1) Servlets can be explicitly accessed with the URL:
http://server:8080/servlet/ServletName
where server is the name of the server or localhost if the server is running on your local machine and ServletName is the name of your servlet class name.
2) Run the web server administration tool and associate an arbitrarily chosen name with the servlet class name. This name is sometimes called the "registered" servlet name. For example, you could associate "MyName" with your servlet class name and you would invoke the servlet with the URL:
http://server:8080/servlet/MyName
3) Run the web server administration tool and set up an alias for a URL so that when that when that URL is accessed, a specific servlet is invoked. For example, you can alias the following URL to invoke a servlet:
http://server:8080/anyurl
Aliases are useful if you’re replacing existing HTML pages with servlets. You can keep the URLs the same; they’ll invoke servlets instead of displaying the HTML.
Difference between doGet and doPost Sending a GET or POST request to it in order to expedite the request by calling corresponding doGet() and doPost() methods.
doGet is called in response to an HTTP GET request. This happens when users click on a link, or enter a URL into the browser's address bar. It also happens with some HTML FORMs (those with METHOD="GET" specified in the FORM tag). doPost is called in response to an HTTP POST request. This happens with some HTML FORMs (those with METHOD="POST" specified in the FORM tag).
Both methods are called by the default (superclass) implementation of service in the HttpServlet base class. You should override one or both to perform your servlet's actions. You probably shouldn't override service().
There is a restriction of numbers of parameters to be sent through doGet method around 2k of data can be sent and moreover whole of URL is to be mentioned in case of doGet as mentioned below:http://www.spearheadit.com/servlet?param1=value1¶m2=value2&...¶mN=valueNSo it is always better to use doPost() when sending parameters from a FORM as it doesn’t show off information related with password on the network etc.
Q. What is the difference between GenericServlet and HTTPServlet? Explain their methods? Tell me their parameter names also?
Answer: HTTPServlet class extends GenericServlet class. GenericServlet class helps in creating servlets, which are protocol independent.GenericServlet has a serve() method aimed to handle requests. HttpServlet extends GenericServlet and adds support for doGet(), doPost(), doHead() methods (HTTP 1.0) plus doPut(), doOptions(), doDelete(), doTrace() methods (HTTP 1.1). Both these classes are abstract.
Q. Can there be more than one instance of a servlet at one time ?
Q. Can there be more than one instance of a servlet at one time ?
Answer: It is important to note that there can be more than one instance of a given Servlet class in the servlet container. For example, this can occur where there was more than one servlet definition that utilized a specific servlet class with different initialization parameters. This can also occur when a servlet implements the SingleThreadModel interface and the container creates a pool of servlet instances to use.
Q. What is SingleThreadModel in view of servlets?
Q. What is SingleThreadModel in view of servlets?
Answer: SingleThreadModel interface once implemented makes a servlet thread safe. In this case only one thread will be able to execute service() method at a time.Though it affects the performance of the servlet to a great extent. In STM container creates multiple instances of servlet
Q. Why there are no constructors in servlets?
Q. Why there are no constructors in servlets?
Answer: A servlet is just like an applet in the respect that it has an init() method that acts as a constrcutor. Since the servlet environment takes care of instantiating the servlet, an explicit constructor is not needed. Any initialization code you need to run should be placed in the init() method since it gets called when the servlet is first loaded by the servlet container.
Q. What is the difference in between encodeRedirectURL and encodeURL?
Q. What is the difference in between encodeRedirectURL and encodeURL?
Answer: encodeURL and encodeRedirectURL are methods of the HttpResponse object. Both rewrite a raw URL to include session data if necessary. (If cookies are on, both are no-ops.) encodeURL is for normal links inside your HTML pages.
encodeRedirectURL is for a link you're passing to response.sendRedirect().
Q. What do Cookies mean? Explain.
encodeRedirectURL is for a link you're passing to response.sendRedirect().
Q. What do Cookies mean? Explain.
Answer: Cookies are information text messages exchange between a client and server in order to keep a track of session of a user to a server. Cookies help a user in order to reconnect to a site on later date, as textual information is stored at the client end for max age of the cookie.
Q. Why do GenericServlet and HttpServlet implement the Serializable interface? Answer: GenericServlet and HttpServlet implement the Serializable interface so that servlet engines can "hybernate" the servlet state when the servlet is not in use and reinstance it when needed or to duplicate servlet instances for better load balancing. I don't know if or how current servlet engines do this, and it could have serious implications, like breaking references to objects gotten in the init() method without the programmer knowing it. Programmers should be aware of this pitfall and implement servlets which are stateless as possible, delegating data store to Session objects or to the ServletContext. In general stateless servlets are better because they scale much better and are cleaner code.
Q. Why do we need to call super.init(config) in the init method of a servlet?
Q. Why do GenericServlet and HttpServlet implement the Serializable interface? Answer: GenericServlet and HttpServlet implement the Serializable interface so that servlet engines can "hybernate" the servlet state when the servlet is not in use and reinstance it when needed or to duplicate servlet instances for better load balancing. I don't know if or how current servlet engines do this, and it could have serious implications, like breaking references to objects gotten in the init() method without the programmer knowing it. Programmers should be aware of this pitfall and implement servlets which are stateless as possible, delegating data store to Session objects or to the ServletContext. In general stateless servlets are better because they scale much better and are cleaner code.
Q. Why do we need to call super.init(config) in the init method of a servlet?
Answer: The reason is Servlet interface defines a method called getServletConfig(),you should either save the servletconfig object and implement the getServletConfig()method yourself or pass the object to the parent class using super.init(). However this is done for backward compatibility(before version 2.1).In version 2.1 you don't require to call that super.init()
Q. Can you use System.exit in your servlet end code?
Q. Can you use System.exit in your servlet end code?
Answer: No At best, you'll get a security exception.At worst, you'll make the servlet engine, or maybe the entire web server, quit.
Q. What is a Servlet Context?
Q. What is a Servlet Context?
Answer: A Servlet Context is a group where related servlets (and JSPs and other web resources) run. They can share data, URL namespace, and other resources. There can be multiple contexts in a single servlet container. The ServletContext object is used by an individual servlet to "call back" and obtain services from the container (such as a request dispatcher).
Q. What is the difference between Java Servlets and Java ServerPages (JSP)? Answer:
Short answer: a JSP is a Servlet that thinks it's a Web page.
Medium answer: Both use server-side Java to dynamically generate web pages. The source code to a servlet looks like Java, with HTML embedded in out. print (...) statements. Both use the Servlet API to communicate with the web server and the client. In fact, a JSP gets compiled into a servlet, so they're almost identical in terms of expressive power. The choice is, whether you're more comfortable coding your pages in Java or in JSP-style HTML; and since you can call a JSP from a Servlet and vice versa, you don't have to make an either-or decision.
Long answer: See the Servlet FAQ and the JSP FAQ for all the information you need about both technologies.
(*) "Funny tags:" JSP can contain (a) normal HTML tags, (b) JSP tags like, (c) custom tags, (d) scriptlets (Java code surrounded with <% and %>).
Q. What is the difference between page directive <%@include % > andaction command?
(*) "Funny tags:" JSP can contain (a) normal HTML tags, (b) JSP tags like
Q. What is the difference between page directive <%@include % > and
Answer: JSP directive <%@include %> is interpreted at the compile time and text is merged before JSP being converted into servlet.While in case of is interpreted at the runtime where text is merged with JSP at runtime may be a servlet or a JSP is included at runtime.
Q. What are Entity Bean and Session Bean?
b. BMP Entity Bean: A bean managed persistent entity bean is persisted in the database by hand or say programmatically. A component developer has to code to translate in memory objects to underlying RDBMS or object database.
A Session Bean incorporates business logic or business rules or workflow related logic of an enterprise. A session bean exists only until a session exists between a client and server so it has real short period of its existence. Session beans are of two types: a. Stateless Session BeanIn case where state between a client and a server interaction is not to be persisted then Stateless session bean is to be used. e.g. executing calculating tax or validating a credit card etc. The stateless bean instance does not have longevity.
b. Stateful Session BeanStateful Session bean keeps a conversational state of a client over a series of method calls, keeping it in a persistent area. They are more functional than stateless session bean as they store conversational state.
Whenever a client access a stateful session bean and trough with a series of method calls over it then before moving the bean instance into passivated state, the conversational state is stored into the persistent area i.e. hard disk. This makes smart resource management. Whenever the same client is making a request again over the stateful session bean then state is pulled out of hard disk into in memory of bean. This is called activated state. Thus state of a client is saved in between context switching in a persistent storage area.
Q. What are the methods of Entity Bean?
create methods: These methods are used for creating an instance of an Entity bean .They correspond to ejbCreate() method of bean class and always implemented.
finder methods: These methods are used for locating bean instance based on a unique identifier called primary key. findByPrimaryKey (), which returns a Collection of remote references to bean.
remove methods: These methods (you may have up to 2 remove methods, or don't have them at all) allow the client to physically remove Entity Beans. You can remove these beans by specifying either Handle or a Primary Key for the Entity Bean.
home methods:
Q. How does Stateful Session Bean store its state?
Q. Why does Stateless Session bean not store its state even though it has ejbActivate and ejbPassivte?
Q. What are the services provided by the container?
Q. Types of transaction?
Q. What is bean-managed transaction?
Q. Why does EJB need two interfaces (Home and Remote Interface)?
Q. What are transaction attributes?
Q. What is the difference between CMP and BMP Entity Bean?
Q. What is J2EE?
Q. What is JTS?
A JTS Transaction Manager provides transaction services to the parties involved in distributed transactions: the application server, the resource manager, the standalone transactional application, and the Communication Resource Manager (CRM).
Q. Which transaction attributes should I use in which situations?
All methods of a session bean's remote interface (and super interfaces) must have specified transaction attributes. Session bean home interface methods should not have transaction attributes. (All methods of an entity bean's remote and home interfaces (and super interfaces) must have specified transaction attributes, with the exception of: methods getEJBHome(), getHandle(), getPrimaryKey(), isIdentical() methods of the remote interface; and methods getEJBMetaData(), getHomeHandle() of the home interface. Use Required as the default transaction attribute, to ensure that methods are invoked within a Java Transaction API (JTA) transaction context. Required causes the enterprise bean to use existing transactional context if it exists, or to create one otherwise.
Use RequiresNew when the results of the method must be committed regardless whether the caller's transaction succeeds. For example, a method that logs all attempted transactions, whether those transaction succeed or not, could use RequiresNew to add log entries. RequiresNew always creates a new transaction context before the method call, and commits or rolls back after the method call. Note that any existing client transaction context will be suspended until the method call returns.
Use Supports for methods that either do not change the database (directly or indirectly); or update atomically, and it does not matter whether or not the update occurs within a transaction. Supports uses the client transaction context if it exists, or no transaction context otherwise.
Use Mandatory when the method absolutely requires an existing transaction. Mandatory causes RemoteException to be thrown unless the client is associated with a transaction context.
Use Never to ensure that a transactional client does not access methods that are not capable of participating in the transaction. Never causes RemoteException to be thrown if the client is associated with a transactional context.
Use NotSupported when an enterprise bean accesses a resource manager that either does not support external transaction coordination, or is not supported by the J2EE product. In this case, the bean must have container-managed transaction demarcation, and all its methods must be marked NotSupported. NotSupported will result in the method being called outside of any transaction context, whether or not one exists. Enterprise beans that implement interface SessionSynchronization must have either the Required, RequiresNew, or Mandatory transaction attribute.
Q. How can I handle transaction isolation?
If a container uses only one bean instance per primary key, the container will synchronize access to the bean and therefore transaction isolation is unnecessary. Containers that use multiple instances per primary key depend on the underlying database for isolation.
Enterprise beans using container-managed persistence use the default isolation level of the underlying database; therefore, the isolation level cannot modified. Entity beans using bean-managed persistence may use the underlying DBMS API to change the isolation level (using, for example, Connection.setTransactionIsolation().)
Q. Does the J2EE platform support distributed transactions?
Q. What are some tips for using bean-managed transaction demarcation?
Q. Can an entity bean use bean-managed transaction demarcation?
Q. Should I put a transactional attribute on an asynchronous action such as sending an email?
Q. Can I use multiple connections to the same resource manager from within a bean instance that executes in an XA or a global transaction ?
Answer: A bean instance that executes in an XA or a global transaction should not use multiple connections to the same resource manager.
Specifically, a bean instance that executes in an XA transaction should not cache more than one connection to the same resource manager. Further, it should not create more than one connection to the same resource manager from within a bean method under a single XA transaction.
This is needed because even though XA allows multiple connections to be enlisted in a single transaction branch, there are some restrictions. Some resource managers do not allow more than one connection to be simultaneously enlisted in the same transaction branch.
Note however that within a single XA transaction, there can be more than one connection to a single resource manager, spread across different bean instances.
Q. Does the J2EE platform support nested transactions?
Q. What is scalability and portability in J2EE?
Java is a platform independent language, which has characteristic of ‘execute once and run anywhere’. A Java code can run in a crossed platform environment as it’s executed in its own JVM. Hence a Java code can be ported in any Operating System environment and this issue is termed as portability. An EJB can also required to be ported from one vendor EJB container to another vendor’s EJB container.
Q. What is Connection Pooling? Is it advantageous?
This mechanism of connection pooling helps in smart and efficient use of system resources and improving the overall performance of the whole system.
Q. How is entity bean created using container managed entity bean?
Q. In Entity Bean will the create method in EJB Home and ejbCreate () in Entity bean have the same parameters?
Q. What are the additional features of EJB 2.1 over EJB 2.0
Everybody has noticed that the biggest addition in EJB 2.1 is the new support for the Web-Services technology. With this new specifications, in fact, developers can expose their Stateless Session and Message-Driven EJBs as Web Services based on SOAP. This will mean that any client that complies with SOAP 1.1 will be able to access to the exposed EJBs. The APIs that will allow this and that have been added, are JAXM and JAX-RPC.
The first one, JAX-RPC, stands for Java API for XML-RPC, and it can be considered as Java RMI, but unsing SOAP as the protocol.The second one, JAXM, stands for Java API for XML Messaging, and it is a SOAP messaging API similar to JMS (Java Message Service). JAXM is an API for sending and receiving messages via Web services, conceptually similar to JMS that is an API for sending and receiving messages via message-oriented middleware.
Another addition is the Times Service, that can be seen as a scheduling built right inside the EJB Container.With EJB 2.1, any Stateless Session or Entity Bean can register itself with the Timer Service, requesting a notification or when a given timeframe has elapsed, or at a specific point in time.From a developer point of view, the Timer Service uses a very simple programming model based on the implementation of the TimedObject interface.
From the enhancement side, the Query Language is definitely the topic where the improvements are definitely more visible.The ORDER BY clause has finally been added. This will improve performance on orederd queries, because this will be handled by the underneath database, and not through the code by sorting the resulting collection.The WHERE clause has been improved with the addition of MOD, while the SELECT clause has been improved by adding aggregate functions, like COUNT, SUM, AVG, MIN and MAX.
Other enhancements can be noticed on the Message-Driven Beans or the Destination Linking.
Q. What's difference between Servlet/JSP session and EJB session?
A session in a Servlet, is maintained by the Servlet Container through the HttpSession object, that is acquired through the request object. You cannot really instantiate a new HttpSession object, and it doesn't contains any business logic, but is more of a place where to store objects.
A session in EJB is maintained using the SessionBeans. You design beans that can contain business logic, and that can be used by the clients. You have two different session beans: Stateful and Stateless. The first one is somehow connected with a single client. It maintains the state for that client, can be used only by that client and when the client "dies" then the session bean is "lost".
A Stateless Session Bean doesn't maintain any state and there is no guarantee that the same client will use the same stateless bean, even for two calls one after the other. The lifecycle of a Stateless Session EJB is slightly different from the one of a Stateful Session EJB. Is EJB Container's responsability to take care of knowing exactly how to track each session and redirect the request from a client to the correct instance of a Session Bean. The way this is done is vendor dependant, and is part of the contract.
Q. Why we use home interface in EJB. In RMI we dont have any concept like home interface. why we particularly go for Home Interface ?
Having said this, the answer to your question is the following. The home interface is EJB's way of creating an object. Home interfaces act as factories to create session beans and entity beans. These factories are provided by the application container and take care of many low level details. Since RMI is a lower level technology, it does not offer the home interface. You would have to create it yourself.
Q. How is JDO(Java Data Object) different from VO(Value Object) ?
Side note: I know that many books out there still refer to these data holders as value objects but the correct term is DTO: data transfer objects. Value objects refer to objects that hold a value. A good example of this java.lang.Integer object which holds an int.
Q. What are the differences of Container Managed Persistence 1.1 and 2.0?Answer: The main difference is that in EJB 2.0, the persistence manager is responsible for mapping the entity bean to the database based on the newly introduced abstract persistence schema. In other words, you can say that the persistence manager handles persistence of your CMP entity beans at runtime.Plus, thanks to the EJB Query Language, the persistence manager is also responsible for implementing and executing find methods based on it.In the previous CMP EJB 1.1, is the developer that must declare the bean class' persistent fields as either Java primitive or serializable types, providing getters and setters for all of them.
In CMP EJB 2.0, its persistent fields are not defined directly in the bean class, thanks to the new abstract persistent schema.This schema has been developed to allow the bean provider to declare the persistent fields (and bean relationships, eventually) indirectly.
Q. Are there any tools for porting EJB Applications from one Application Server to another?
Q. The Singleton pattern is not permitted by the J2EE spec, so how can I cache EJB home interfaces across EJBs in my application and avoid having each EJB get its own home interfaces?
Q. What is the default time for transaction manager? And how to set maximum time(timeout) for transaction?
// One of the methods from the SessionBean interfacepublic void setSessionContext(SessionContext context) throws EJBException{sessionContext = context;}
// Then, when starting a new transactionUserTransaction userTransaction = sessionContext.getUserTransaction();userTransaction.setTransactionTimeout(60);userTransaction.begin();// do stuffuserTransaction.commit();
If you are using container-managed transactions, this value is set in a app server specific way. Check your app server's deployment descriptor DTD.
Q. What is the difference between ejbCreate() and ejbPostCreate() in EntityBean? Answer: An ejbCreate () method is called just before persisting the data into underlying database in case of Entity beans. It will create a new record in the database. A create () method defined in Home interface will correspond to an ejbCreate() method in bean class with the same arguments.
ejbPostCreate() is called by EjbContainer immediately after ejbCreate() method. This method is may also be used reset transaction related parameters.
0 Comments:
Post a Comment
<< Home