[ Team LiB ] Previous Section Next Section

Recipe 25.6 Accessing the WebLogic JNDI Resource from a Servlet


You want to access the JNDI object created and bound on WebLogic.


Use the JNDI API in the servlet to access a reference to the bound object.


Example 25-9 is an HttpServlet that obtains a javax.mail.Session object from WebLogic's JNDI implementation. The servlet uses this object to build an email message. The servlet initiates the JNDI lookup in its init( ) method for an object bound under the name "MyEmail" (Recipe 25.4). The servlet container calls the init( ) once when the container creates the servlet instance.

Example 25-9. Servlet to obtain a javax.mail.Session object from WebLogic's JNDI implementation and build an email message
package com.jspservletcookbook;    

import java.io.IOException;
import java.io.PrintWriter;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;  
import javax.mail.*;
import javax.mail.internet.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class EmailJndiServlet extends HttpServlet {

    private Session mailSession;

  public void init( ) throws ServletException {
      Context env = null;

          env = (Context) new InitialContext( );
          mailSession = (Session) env.lookup("MyEmail");
          if (mailSession == null)
              throw new ServletException(
                 "MyEmail is an unknown JNDI object");
           //close the InitialContext
           env.close( );
      } catch (NamingException ne) { 
          try{ env.close( );} catch (NamingException nex) { }
          throw new ServletException(ne);

  public void doPost(HttpServletRequest request, 
      HttpServletResponse response) throws ServletException,
          java.io.IOException {
      java.io.PrintWriter out = response.getWriter( );

      "<html><head><title>Email message sender</title></head><body>");
      String to = request.getParameter("to");
      String from = request.getParameter("from");
      String subject = request.getParameter("subject");
      String emailContent = request.getParameter("emailContent");
       } catch(Exception exc){
          throw new ServletException(exc.getMessage( ));
        "<h2>The message was sent successfully</h2></body></html>");

  } //doPost
  public void doGet(HttpServletRequest request, 
    HttpServletResponse response) throws ServletException,
        java.io.IOException {
      //doGet( ) calls doPost( )  
  private void sendMessage(String to, String from, String subject, 
    String bodyContent) throws Exception {
      Message mailMsg = null;
      mailMsg = new MimeMessage(mailSession);//a new email message
      InternetAddress[] addresses = null;
      try {
          if (to != null) {
              //throws 'AddressException' if the 'to' email address
              //violates RFC822 syntax
              addresses = InternetAddress.parse(to, false);
              mailMsg.setRecipients(Message.RecipientType.TO, addresses);
          } else {
              throw new MessagingException(
                "The mail message requires a 'To' address.");

          if (from != null)

          if (subject != null)

          if (bodyContent != null)
          //Finally, send the mail message; throws a 'SendFailedException' 
          //if any of the message's recipients have an invalid adress
          } catch (Exception exc) {
              throw exc;


The doPost( ) method calls the servlet's sendMessage( ) method, passing in the email message parts such as the recipient and the email's content. The servlet derives this information from request parameters that the user submits. A typical request for the servlet looks like:

  emailContent=A web message

A user can also POST information to the servlet with an HTML form.

The servlet's sendMessage( ) method uses the JNDI object in the javax.mail.internet.MimeMessage constructor when the method creates a new email message.

Figure 25-6 shows the servlet's simple return message in a browser window.

Figure 25-6. The servlet sends the email successfully

See Also

Recipe 25.4 on configuring a JNDI object on WebLogic; Recipe 25.5 on viewing the WebLogic JNDI tree with the Administration console; Recipe 25.7 on accessing a JNDI object with a JSP on WebLogic; Chapter 2 on deploying web components with WebLogic.

    [ Team LiB ] Previous Section Next Section