[ Team LiB ] |
![]() ![]() |
Recipe 25.6 Accessing the WebLogic JNDI Resource from a ServletProblemYou want to access the JNDI object created and bound on WebLogic. SolutionUse the JNDI API in the servlet to access a reference to the bound object. DiscussionExample 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 messagepackage 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![]() See AlsoRecipe 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 ] |
![]() ![]() |