Recipe 25.6 Accessing the WebLogic JNDI Resource from a Servlet


Problem

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

Solution

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

Discussion

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;            try{           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);       }   }//init  public void doPost(HttpServletRequest request,        HttpServletResponse response) throws ServletException,           java.io.IOException {            response.setContentType("text/html");       java.io.PrintWriter out = response.getWriter( );       out.println(       "<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");       try{           sendMessage(to,from,subject,emailContent);        } catch(Exception exc){           throw new ServletException(exc.getMessage( ));        }  out.println(         "<h2>The message was sent successfully</h2></body></html>");             out.println("</body></html>");   } //doPost         public void doGet(HttpServletRequest request,      HttpServletResponse response) throws ServletException,         java.io.IOException {                //doGet( ) calls doPost( )         doPost(request,response);              }  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)               mailMsg.setFrom(from);           if (subject != null)               mailMsg.setSubject(subject);           if (bodyContent != null)               mailMsg.setText(bodyContent);                    //Finally, send the mail message; throws a 'SendFailedException'            //if any of the message's recipients have an invalid adress           Transport.send(mailMsg);                    } catch (Exception exc) {               throw exc;     }//sendMessage  }//EmailJndiServlet 

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:

 http://localhost:7001/email?to=author@jspservletcookbook.com&   from=bwperry@parkerriver.com&subject=hello&   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
figs/jsjc_2506.gif

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.



Java Servlet & JSP Cookbook
Java Servlet & JSP Cookbook
ISBN: 0596005725
EAN: 2147483647
Year: 2004
Pages: 326

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net