Web Application Constants Javax.mail

I have a small web application with a MySQL database. The application uses javax.mail and includes these statements:
MyAuthenticator auth = new MyAuthenticator();
Session session = Session.getInstance(props, auth);
And MyAuthenticator returns this:
return new PasswordAuthentication(emailaddress, password);
To avoid hard-coding the emailaddress and password, I have stored them in a MYSQL table and MyAuthenticator queries the table when it is called. Looking back this seems inefficient and maybe off-track.
How do I get constants into a web application efficiently? Can I somehow query the table at the start up of the application and have the constants available as long as the application is running? Is there a completely different approach that I should be thinking about?
Thanks in advance for your help.

That was quite a great idea. Here is what I managed to pieced together, for anyone who wants a solution.
The new Authenticator:
public class MyAuthenticator extends Authenticator {
    private String emailaddress;
    private String password;
    public PasswordAuthentication getPasswordAuthentication() {
        return new PasswordAuthentication(emailaddress, password);
    public String getEmailaddress() {
        return emailaddress;
    public void setEmailaddress(String emailaddress) {
        this.emailaddress = emailaddress;
    public String getPassword() {
        return password;
    public void setPassword(String password) {
        this.password = password;
}Here is the Mailer in ContextBean:
  // Create a mail session
        java.util.Properties props = new java.util.Properties();
        props.put("mail.smtp.host", smtpHost);
        props.put("mail.smtp.auth", "true");
        MyAuthenticator auth = new MyAuthenticator();
        auth.setEmailaddress(emailaddress);
        auth.setPassword(password);
        Session session = Session.getInstance(props, auth);
        // Construct the message here
        Message msg = new MimeMessage(session);
        // recipient can respond using from
        // Send the message
        Transport.send(msg);I really learned a lot and appreciate the responses from everyone.

Similar Messages

  • Servlet: "action" failed to preload on startup in Web application

    Hi,
    I was using weblogic 8.1.3 for my application, it was working fine. I shifted to weblogic 8.1.5 and after redeplying and restarting the server i am getting the following error:
    <Jun 12, 2006 4:37:54 PM IST> <Error> <HTTP> <BEA-101216> <Servlet: "action" failed to preload on startup in Web application: "common".
    javax.servlet.ServletException: ERROR_LOADING_PLUGIN_FILE/waf-plugin.xml
    Root Cause :delegate
    Root Cause :Unable to resolve 'LMAdminBusinessMethodsSession' Resolved
    at com.oomc.waf.action.WAFPlugIn.init(WAFPlugIn.java:159)
    at org.apache.struts.action.ActionServlet.initModulePlugIns(ActionServlet.java:1158)
    at org.apache.struts.action.ActionServlet.init(ActionServlet.java:473)
    at javax.servlet.GenericServlet.init(GenericServlet.java:258)
    at weblogic.servlet.internal.ServletStubImpl$ServletInitAction.run(ServletStubImpl.java:1094)
    at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
    at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)
    at weblogic.servlet.internal.ServletStubImpl.createServlet(ServletStubImpl.java:970)
    at weblogic.servlet.internal.ServletStubImpl.createInstances(ServletStubImpl.java:949)
    at weblogic.servlet.internal.ServletStubImpl.prepareServlet(ServletStubImpl.java:888)
    at weblogic.servlet.internal.WebAppServletContext.preloadServlet(WebAppServletContext.java:3430)
    at weblogic.servlet.internal.WebAppServletContext.preloadServlets(WebAppServletContext.java:3375)
    at weblogic.servlet.internal.WebAppServletContext.preloadResources(WebAppServletContext.java:3356)
    at weblogic.servlet.internal.WebAppServletContext.setStarted(WebAppServletContext.java:6208)
    at weblogic.servlet.internal.WebAppModule.start(WebAppModule.java:864)
    at weblogic.j2ee.J2EEApplicationContainer.start(J2EEApplicationContainer.java:2134)
    at weblogic.j2ee.J2EEApplicationContainer.activate(J2EEApplicationContainer.java:2175)
    at weblogic.j2ee.J2EEApplicationContainer.activate(J2EEApplicationContainer.java:2122)
    at weblogic.management.deploy.slave.SlaveDeployer$Application.setActivation(SlaveDeployer.java:3099)
    at weblogic.management.deploy.slave.SlaveDeployer.setActivationStateForAllApplications(SlaveDeployer.java:1768)
    at weblogic.management.deploy.slave.SlaveDeployer.resume(SlaveDeployer.java:351)
    at weblogic.management.deploy.DeploymentManagerServerLifeCycleImpl.resume(DeploymentManagerServerLifeCycleImpl.java:229)
    at weblogic.t3.srvr.SubsystemManager.resume(SubsystemManager.java:136)
    at weblogic.t3.srvr.T3Srvr.resume(T3Srvr.java:965)
    at weblogic.t3.srvr.T3Srvr.run(T3Srvr.java:360)
    at weblogic.Server.main(Server.java:32)
    >
    <Jun 12, 2006 4:37:56 PM IST> <Warning> <J2EE> <BEA-160105> <User-defined listener in application realmapp threw exception weblogic.management.ApplicationException - with nested exception:
    [java.lang.NullPointerException]>
    <Jun 12, 2006 4:37:56 PM IST> <Error> <Deployer> <BEA-149231> <Unable to set the activation state to true for the application realmapp.
    java.lang.NullPointerException
    at java.lang.String.startsWith(String.java:1006)
    at com.bea.wli.bpm.runtime.versioning.VersioningConfigurationHelper.udpateVersioningMBeans(VersioningConfigurationHelper.java:131)
    at com.bea.wli.bpm.runtime.versioning.VersioningConfigurationHelper.registerMBeans(VersioningConfigurationHelper.java:48)
    at com.bea.wli.management.internal.BPMConfigurationMBeanImpl.registerVersioningMBeans(BPMConfigurationMBeanImpl.java:288)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:324)
    at weblogic.management.internal.DynamicMBeanImpl.invokeLocally(DynamicMBeanImpl.java:755)
    at weblogic.management.internal.DynamicMBeanImpl.invoke(DynamicMBeanImpl.java:734)
    at weblogic.management.internal.ConfigurationMBeanImpl.invoke(ConfigurationMBeanImpl.java:516)
    at com.bea.wli.management.internal.WLIConfigurationMBeanImpl.invoke(WLIConfigurationMBeanImpl.java:172)
    at com.sun.management.jmx.MBeanServerImpl.invoke(MBeanServerImpl.java:1557)
    at com.sun.management.jmx.MBeanServerImpl.invoke(MBeanServerImpl.java:1525)
    at weblogic.management.internal.RemoteMBeanServerImpl.private_invoke(RemoteMBeanServerImpl.java:990)
    at weblogic.management.internal.RemoteMBeanServerImpl.invoke(RemoteMBeanServerImpl.java:948)
    at weblogic.management.internal.MBeanProxy.invoke(MBeanProxy.java:948)
    at weblogic.management.internal.MBeanProxy.invokeForCachingStub(MBeanProxy.java:475)
    at com.bea.wli.management.configuration.BPMConfigurationMBean_Stub.registerVersioningMBeans(Unknown Source)
    at com.bea.wli.management.WLIAppListener$5.run(WLIAppListener.java:711)
    at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
    at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)
    at com.bea.wli.management.WLIAppListener.registerVersioningMBeans(WLIAppListener.java:705)
    at com.bea.wli.management.WLIAppListener.postStart(WLIAppListener.java:279)
    at weblogic.j2ee.ListenerInvocationAction.run(ListenerInvocationAction.java:58)
    at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
    at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)
    at weblogic.j2ee.J2EEApplicationContainer.notifySecureListener(J2EEApplicationContainer.java:4871)
    at weblogic.j2ee.J2EEApplicationContainer.notify(J2EEApplicationContainer.java:4856)
    at weblogic.j2ee.J2EEApplicationContainer.activate(J2EEApplicationContainer.java:2228)
    at weblogic.j2ee.J2EEApplicationContainer.activate(J2EEApplicationContainer.java:2174)
    at weblogic.j2ee.J2EEApplicationContainer.activate(J2EEApplicationContainer.java:2122)
    at weblogic.management.deploy.slave.SlaveDeployer$Application.setActivation(SlaveDeployer.java:3099)
    at weblogic.management.deploy.slave.SlaveDeployer.setActivationStateForAllApplications(SlaveDeployer.java:1768)
    at weblogic.management.deploy.slave.SlaveDeployer.resume(SlaveDeployer.java:351)
    at weblogic.management.deploy.DeploymentManagerServerLifeCycleImpl.resume(DeploymentManagerServerLifeCycleImpl.java:229)
    at weblogic.t3.srvr.SubsystemManager.resume(SubsystemManager.java:136)
    at weblogic.t3.srvr.T3Srvr.resume(T3Srvr.java:965)
    at weblogic.t3.srvr.T3Srvr.run(T3Srvr.java:360)
    at weblogic.Server.main(Server.java:32)
    --------------- nested within: ------------------
    weblogic.management.ApplicationException - with nested exception:
    [java.lang.NullPointerException]
    at weblogic.j2ee.J2EEApplicationContainer.notifySecureListener(J2EEApplicationContainer.java:4875)
    at weblogic.j2ee.J2EEApplicationContainer.notify(J2EEApplicationContainer.java:4856)
    at weblogic.j2ee.J2EEApplicationContainer.activate(J2EEApplicationContainer.java:2228)
    at weblogic.j2ee.J2EEApplicationContainer.activate(J2EEApplicationContainer.java:2174)
    at weblogic.j2ee.J2EEApplicationContainer.activate(J2EEApplicationContainer.java:2122)
    at weblogic.management.deploy.slave.SlaveDeployer$Application.setActivation(SlaveDeployer.java:3099)
    at weblogic.management.deploy.slave.SlaveDeployer.setActivationStateForAllApplications(SlaveDeployer.java:1768)
    at weblogic.management.deploy.slave.SlaveDeployer.resume(SlaveDeployer.java:351)
    at weblogic.management.deploy.DeploymentManagerServerLifeCycleImpl.resume(DeploymentManagerServerLifeCycleImpl.java:229)
    at weblogic.t3.srvr.SubsystemManager.resume(SubsystemManager.java:136)
    at weblogic.t3.srvr.T3Srvr.resume(T3Srvr.java:965)
    at weblogic.t3.srvr.T3Srvr.run(T3Srvr.java:360)
    at weblogic.Server.main(Server.java:32)
    >
    <Jun 12, 2006 4:37:57 PM IST> <Warning> <J2EE> <BEA-160105> <User-defined listener in application reapp threw exception weblogic.management.ApplicationException - with nested exception:
    [java.lang.NullPointerException]>
    <Jun 12, 2006 4:37:57 PM IST> <Error> <Deployer> <BEA-149231> <Unable to set the activation state to true for the application reapp.
    java.lang.NullPointerException
    at java.lang.String.startsWith(String.java:1006)
    at com.bea.wli.bpm.runtime.versioning.VersioningConfigurationHelper.udpateVersioningMBeans(VersioningConfigurationHelper.java:131)
    at com.bea.wli.bpm.runtime.versioning.VersioningConfigurationHelper.registerMBeans(VersioningConfigurationHelper.java:48)
    at com.bea.wli.management.internal.BPMConfigurationMBeanImpl.registerVersioningMBeans(BPMConfigurationMBeanImpl.java:288)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:324)
    at weblogic.management.internal.DynamicMBeanImpl.invokeLocally(DynamicMBeanImpl.java:755)
    at weblogic.management.internal.DynamicMBeanImpl.invoke(DynamicMBeanImpl.java:734)
    at weblogic.management.internal.ConfigurationMBeanImpl.invoke(ConfigurationMBeanImpl.java:516)
    at com.bea.wli.management.internal.WLIConfigurationMBeanImpl.invoke(WLIConfigurationMBeanImpl.java:172)
    at com.sun.management.jmx.MBeanServerImpl.invoke(MBeanServerImpl.java:1557)
    at com.sun.management.jmx.MBeanServerImpl.invoke(MBeanServerImpl.java:1525)
    at weblogic.management.internal.RemoteMBeanServerImpl.private_invoke(RemoteMBeanServerImpl.java:990)
    at weblogic.management.internal.RemoteMBeanServerImpl.invoke(RemoteMBeanServerImpl.java:948)
    at weblogic.management.internal.MBeanProxy.invoke(MBeanProxy.java:948)
    at weblogic.management.internal.MBeanProxy.invokeForCachingStub(MBeanProxy.java:475)
    at com.bea.wli.management.configuration.BPMConfigurationMBean_Stub.registerVersioningMBeans(Unknown Source)
    at com.bea.wli.management.WLIAppListener$5.run(WLIAppListener.java:711)
    at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
    at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)
    at com.bea.wli.management.WLIAppListener.registerVersioningMBeans(WLIAppListener.java:705)
    at com.bea.wli.management.WLIAppListener.postStart(WLIAppListener.java:279)
    at weblogic.j2ee.ListenerInvocationAction.run(ListenerInvocationAction.java:58)
    at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
    at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)
    at weblogic.j2ee.J2EEApplicationContainer.notifySecureListener(J2EEApplicationContainer.java:4871)
    at weblogic.j2ee.J2EEApplicationContainer.notify(J2EEApplicationContainer.java:4856)
    at weblogic.j2ee.J2EEApplicationContainer.activate(J2EEApplicationContainer.java:2228)
    at weblogic.j2ee.J2EEApplicationContainer.activate(J2EEApplicationContainer.java:2174)
    at weblogic.j2ee.J2EEApplicationContainer.activate(J2EEApplicationContainer.java:2122)
    at weblogic.management.deploy.slave.SlaveDeployer$Application.setActivation(SlaveDeployer.java:3099)
    at weblogic.management.deploy.slave.SlaveDeployer.setActivationStateForAllApplications(SlaveDeployer.java:1768)
    at weblogic.management.deploy.slave.SlaveDeployer.resume(SlaveDeployer.java:351)
    at weblogic.management.deploy.DeploymentManagerServerLifeCycleImpl.resume(DeploymentManagerServerLifeCycleImpl.java:229)
    at weblogic.t3.srvr.SubsystemManager.resume(SubsystemManager.java:136)
    at weblogic.t3.srvr.T3Srvr.resume(T3Srvr.java:965)
    at weblogic.t3.srvr.T3Srvr.run(T3Srvr.java:360)
    at weblogic.Server.main(Server.java:32)
    --------------- nested within: ------------------
    weblogic.management.ApplicationException - with nested exception:
    [java.lang.NullPointerException]
    at weblogic.j2ee.J2EEApplicationContainer.notifySecureListener(J2EEApplicationContainer.java:4875)
    at weblogic.j2ee.J2EEApplicationContainer.notify(J2EEApplicationContainer.java:4856)
    at weblogic.j2ee.J2EEApplicationContainer.activate(J2EEApplicationContainer.java:2228)
    at weblogic.j2ee.J2EEApplicationContainer.activate(J2EEApplicationContainer.java:2174)
    at weblogic.j2ee.J2EEApplicationContainer.activate(J2EEApplicationContainer.java:2122)
    at weblogic.management.deploy.slave.SlaveDeployer$Application.setActivation(SlaveDeployer.java:3099)
    at weblogic.management.deploy.slave.SlaveDeployer.setActivationStateForAllApplications(SlaveDeployer.java:1768)
    at weblogic.management.deploy.slave.SlaveDeployer.resume(SlaveDeployer.java:351)
    at weblogic.management.deploy.DeploymentManagerServerLifeCycleImpl.resume(DeploymentManagerServerLifeCycleImpl.java:229)
    at weblogic.t3.srvr.SubsystemManager.resume(SubsystemManager.java:136)
    at weblogic.t3.srvr.T3Srvr.resume(T3Srvr.java:965)
    at weblogic.t3.srvr.T3Srvr.run(T3Srvr.java:360)
    at weblogic.Server.main(Server.java:32)
    >
    Any Help regarding this error will be appreciated.
    Thanks
    Ankur

    Hi,
    Did you find solution to your problem? I get exactly the same error message. When deploying only war, everything works fine but I cannot deploy any webapp inside ear. I'm using weblogic 8.1.6.
    Thanks in advance,
    Martin

  • Outlook exchange e mail application and web application not connected

    Hello Everybody,
    We have issue with 3 of our clients machine that face the same problems.
    When they tried to launch outlook, the status of outlook application always showing that, "Trying to connect"
    and when we tried them to log on to outlook web application, there is nothing to log on..i had tried to log on with 3 difference browsers, but still not work.. other website as yahoo or gmail are working fine..
    We are using Microsoft Exchange.
    Could you let me know what is the real issues with that?
    THanks you
    VeasnaYim

    Dear Edited,
    Thanks so much for your concerning our problems!
    When I tried them to access their e mail through out OWA, no error and i didn't see any display on the webpage and it was just blank!
    Last thing, I deleted their user profiles and configure their exchange e mail to desktop outlook and everything working fine, error gone!
    If you have any ideas, please let me know and i will bring that to fix future issues regarding this!
    Best regards, 
    VeasnaYim

  • Best practice for keeping a mail session open in web application?

    Hello,
    We have a webmail like application where users login with their IMAP credentials, then are taken to an authenticated area of the site where they can manage different things about their email account.
    Right now the application is opening and closing a mail store connection (via a new javax.mail.Session) for each page load based on the current logged in user credentials. To me this seems like it would be a bad practice to keep opening and closing a connection each page load.
    Are there any best practices for this situation? It would be nice to be able to open the connection to the mail server on login, then keep that connection open until the person logs out, session expires, etc.
    I can probably put the javax.mail.Session into the HTTP session, but that seems like it would break any clustering functionality of tomcat. This would be fine if the machine the user is on didn't fail, but id assume if they failed over to another the mail session would be gone. Maybe keeping the mail session in the http session, checking for a connection, then first attempting to reconnect with the logged in credentials before giving up would be a possiblity?
    Any pointers would be appreciated

    If you keep the connection open across pages, you're going to need to deal with
    timeouts - from the http session and from the mail server.
    If you don't keep the connection open, you're going to need to "resynchronize"
    your view of the store/folder with each operation, in case the folder is modified
    by another session.
    The former is easier in the common cases, especially if you don't care how gracefully
    you handle failures. The latter is more difficult in the common cases, but handles
    failure better, and in particular handles clustering better. You'll need to measure it to
    see if it meets your performance and scalability requirements. You may need to mix
    the two approaches to get acceptable performance.

  • How can I show unread mail count of Gmail,Yahoo,AOL in my web application.

    I want to show unread mail count for Gmail,Yahoo,AOL,MSN (e.g. Gmail (5) ) on my web application. Also when user click on unread mail count it should open new window for respective mail Inbox say gmail inbox that shows unread mail of user.
    I have exercised on jgmail source code & it has used HttpClient API to login into gmail and access services of gmail but I am not able to execute it successfully.
    what are the options for above questions?
    Thanks In Advance
    Ankit Patel
    Edited by: ankit.patel on Aug 14, 2008 7:10 AM

    JavaMail supports two standard protocols for reading mail POP3 and IMAP.
    As explained in the JavaMail FAQ (you found it, right?), the POP3 protocol
    doesn't provide information on unread messages.
    As far as I know, only Gmail supports IMAP. I don't believe either AOL or MSN
    support even POP3, but I'm not sure.

  • Connection to mail server where my web application is hosted

    I'm trying to connect to the smtp mail server run on my web application host (mail.hhraweb.com).  I can't seem to get to it anymore on port 25
    c:\users\dad>telnet mail.hhraweb.com 25
    Connecting To mail.hhraweb.com...Could not open connection to the host, on port
    25: Connect failed
    My ? is, is Verizon blocking access to other mail servers on port 25?
    {edited for privacy}

    DougMH wrote:
    I'm trying to connect to the smtp mail server run on my web application host (mail.hhraweb.com).  I can't seem to get to it anymore on port 25
    c:\users\dad>telnet mail.hhraweb.com 25
    Connecting To mail.hhraweb.com...Could not open connection to the host, on port
    25: Connect failed
    My ? is, is Verizon blocking access to other mail servers on port 25?
    {edited for privacy}
    Yes. http://www.verizon.net/port25
    If a forum member gives an answer you like, give them the Kudos they deserve. If a member gives you the answer to your question, mark the answer as Accepted Solution so others can see the solution to the problem.
    "All knowledge is worth having."

  • Send mail from a weblogic web application

    Hello,
    I'd like to know what is the best way to send mails, possibly many mails, from a web application, using weblogic8.
    Actually I use :
          try {
            URL u = new URL("mailto: ...");
            URLConnection c = u.openConnection();
            c.setDoInput(false);
            c.setDoOutput(true);
            c.connect();
            PrintWriter out = new PrintWriter(new OutputStreamWriter(c.getOutputStream()));
            out.println("From: ...");
            out.println("To: ... ");
            out.println("...");
            out.close();
          catch (Exception ex)
             ex.printStackTrace();
          }But when I do load tests, many of the mails send are not delivered...
    Thanks a lot !
    And sorry for my poor english !

    The best way is to use a SMTP server and the JavaMail API...

  • Composing mail from email web application using jsp and custom tags

    here is the send.jsp file
    <%@ page language="java" %>
    <%@ page errorPage="errorpage.jsp" %>
    <%@ taglib uri="http://java.sun.com/products/javamail/demo/webapp"
    prefix="javamail" %>
    <html>
    <head>
         <title>JavaMail send</title>
    </head>
    <body bgcolor="white">
    hi
    <javamail:sendmail
    recipients="<%= request.getParameter(\"to\") %>"
    sender="<%= request.getParameter(\"from\") %>"
    subject="<%= request.getParameter(\"subject\") %>">
    <%= request.getParameter("text") %>
    </javamail:sendmail>
    <h1>Message sent successfully</h1>
    </body>
    </html>
    Here is the java file i.e used to refer to this custom tag
    package taglib;
    import java.util.*;
    import java.net.*;
    import javax.mail.*;
    import javax.mail.Authenticator;
    import javax.mail.internet.*;
    import javax.servlet.jsp.*;
    import javax.servlet.jsp.tagext.*;
    * Custom tag for sending messages.
    public class SendTag extends BodyTagSupport {
    private String body;
    private String cc;
    private String host;
    private String recipients;
    private String sender;
    private String subject;
    * host attribute setter method.
    public void setHost(String host) {
    this.host = host;
    System.out.println("Host is : " +host);
    * recipient attribute setter method.
    public void setRecipients(String recipients) {
    this.recipients = recipients;
    System.out.println("recipients is " +recipients );
    * sender attribute setter method.
    public void setSender(String sender) {
    this.sender = sender;
    System.out.println("Sender is : " +sender);
    * cc attribute setter method.
    public void setCc(String cc) {
    this.cc = cc;
    * subject attribute setter method.
    public void setSubject(String subject) {
    this.subject = subject;
    System.out.println("subject is : " +subject);
    * Method for processing the end of the tag.
    public int doEndTag() throws JspException {
         System.out.println(" ** In do end tag");
    Properties props = System.getProperties();
    try {
    if (host != null)
    props.put("mail.smtp.host", host);
    else if (props.getProperty("mail.smtp.host") == null)
    props.put("mail.smtp.host", InetAddress.getLocalHost().
    getHostName());
    } catch (Exception ex) {
    throw new JspException(ex.getMessage());
    Session session = Session.getDefaultInstance(props,null);
         Message msg = new MimeMessage(session);
         InternetAddress[] toAddrs = null, ccAddrs = null;
    try {
         if (recipients != null) {
         toAddrs = InternetAddress.parse(recipients, false);
         msg.setRecipients(Message.RecipientType.TO, toAddrs);
         } else
         throw new JspException("No recipient address specified");
    if (sender != null)
    msg.setFrom(new InternetAddress(sender));
    else
    throw new JspException("No sender address specified");
         if (cc != null) {
    ccAddrs = InternetAddress.parse(cc, false);
         msg.setRecipients(Message.RecipientType.CC, ccAddrs);
         if (subject != null)
         msg.setSubject(subject);
         if ((body = getBodyContent().getString()) != null)
         msg.setText(body);
    else
    msg.setText("");
    Transport.send(msg);
    } catch (Exception ex) {
    throw new JspException(ex.getMessage());
    return(EVAL_PAGE);
    all the entries in taglib.tld and web.xml are correct.
    It is one of the article given at this url:
    http://java.sun.com/developer/technicalArticles/javaserverpages/emailapps/

    First, you should not take copyrighted code and post it without a copyright.
    The code you posted is copyright Sun Microsystems.
    Second, why did you post it? Did you have a question?

  • Need help in creating a web application that runs on a stand alone sys.

    I am planning a small java web application complete with database. I need to know if there are any ways to deploy that application on a stand alone system and that if there is any way to make an executable for that application so that the user need not go through the process of deploying the app and starting the server whenever he restarts the system. Can anyone help me in this regard? Thanks in advance.

    Hi Alex,
    Since I had a Gmail test servlet kicking around, I ran it on the latest V3 nightly build.
    On the first run, I encountered the following nested exceptions:
    javax.mail.MessagingException: Could not connect to SMTP host: smtp.gmail.com, port: 465
    --> java.net.SocketException: java.security.NoSuchAlgorithmException: Error constructing implementation (algorithm: Default, provider: SunJSSE, class: com.sun.net.ssl.internal.ssl.DefaultSSLContextImpl)
        --> java.security.NoSuchAlgorithmException: Error constructing implementation (algorithm: Default, provider: SunJSSE, class: com.sun.net.ssl.internal.ssl.DefaultSSLContextImpl)
            --> java.security.UnrecoverableKeyException: Password must not be nullThe UnrecoverableKeyException is a manifestation of [https://glassfish.dev.java.net/issues/show_bug.cgi?id=6938|https://glassfish.dev.java.net/issues/show_bug.cgi?id=6938]
    I worked around this by adding the following JVM config options to domain.xml
    <jvm-options>-Djavax.net.ssl.keyStorePassword=changeit</jvm-options>
    <jvm-options>-Djavax.net.ssl.trustStorePassword=changeit</jvm-options> (Note: the default master password is "changeit")
    These lines are placed in /domain/configs/config/java-config of domain.xml for the particular server config you're using. There's only one server config in the default domain.xml shipped with V3. Then restart the server.
    I retested the code on both port 465 and 587, with and without the above config changes. Without the change, they both fail the same way, and with the change, they both work. Let me know if this helps.
    -Peter

  • How do I get info from Active Directory and use it in my web-applications?

    I borrowed a nice piece of code for JNDI hits against Active Directory from this website: http://www.sbfsbo.com/mike/JndiTutorial/
    I have altered it and am trying to use it to retrieve info from our Active Directory Server.
    I altered it to point to my domain, and I want to retrieve a person's full name(CN), e-mail address and their work location.
    I've looked at lots of examples, I've tried lots of things, but I'm really missing something. I'm new to Java, new to JNDI, new to LDAP, new to AD and new to Tomcat. Any help would be so appreciated.
    Thanks,
    To show you the code, and the error message, I've changed the actual names I used for connection.
    What am I not coding right? I get an error message like this:
    javax.naming.NameNotFoundException[LDAP error code 32 - 0000208D: nameErr DSID:03101c9 problem 2001 (no Object), data 0,best match of DC=mycomp, DC=isd, remaining name dc=mycomp, dc=isd
    [code]
    import java.util.Hashtable;
    import java.util.Enumeration;
    import javax.naming.*;
    import javax.naming.directory.*;
    public class JNDISearch2 {
    // initial context implementation
    public static String INITCTX = "com.sun.jndi.ldap.LdapCtxFactory";
    public static String MY_HOST = "ldap://99.999.9.9:389/dc=mycomp,dc=isd";
    public static String MGR_DN = "CN=connectionID,OU=CO,dc=mycomp,dc=isd";
    public static String MGR_PW = "connectionPassword";
    public static String MY_SEARCHBASE = "dc=mycomp,dc=isd";
    public static String MY_FILTER =
    "(&(objectClass=user)(sAMAccountName=usersignonname))";
    // Specify which attributes we are looking for
    public static String MY_ATTRS[] =
    { "cn", "telephoneNumber", "postalAddress", "mail" };
    public static void main(String args[]) {
    try { //----------------------------------------------------------        
    // Binding
    // Hashtable for environmental information
    Hashtable env = new Hashtable();
    // Specify which class to use for our JNDI Provider
    env.put(Context.INITIAL_CONTEXT_FACTORY, INITCTX);
    // Specify the host and port to use for directory service
    env.put(Context.PROVIDER_URL, MY_HOST);
    // Security Information
    env.put(Context.SECURITY_AUTHENTICATION, "simple");
    env.put(Context.SECURITY_PRINCIPAL, MGR_DN);
    env.put(Context.SECURITY_CREDENTIALS, MGR_PW);
    // Get a reference toa directory context
    DirContext ctx = new InitialDirContext(env);
    // Begin search
    // Specify the scope of the search
    SearchControls constraints = new SearchControls();
    constraints.setSearchScope(SearchControls.SUBTREE_SCOPE);
    // Perform the actual search
    // We give it a searchbase, a filter and the constraints
    // containing the scope of the search
    NamingEnumeration results = ctx.search(MY_SEARCHBASE, MY_FILTER, constraints);
    // Now step through the search results
    while (results != null && results.hasMore()) {
    SearchResult sr = (SearchResult) results.next();
    String dn = sr.getName() + ", " + MY_SEARCHBASE;
    System.out.println("Distinguished Name is " + dn);
    // Code for displaying attribute list
    Attributes ar = ctx.getAttributes(dn, MY_ATTRS);
    if (ar == null)
    // Has no attributes
    System.out.println("Entry " + dn);
    System.out.println(" has none of the specified attributes\n");
    else // Has some attributes
    // Determine the attributes in this record.
    for (int i = 0; i < MY_ATTRS.length; i++) {
    Attribute attr = ar.get(MY_ATTRS);
    if (attr != null) {
    System.out.println(MY_ATTRS[i] + ":");
    // Gather all values for the specified attribute.
    for (Enumeration vals = attr.getAll(); vals.hasMoreElements();) {
    System.out.println("\t" + vals.nextElement());
    // System.out.println ("\n");
    // End search
    } // end try
    catch (Exception e) {
    e.printStackTrace();
    System.exit(1);
    My JNDIRealm in Tomcat which actually does the initial authentication looks like this:(again, for security purposes, I've changed the access names and passwords, etc.)
    <Realm className="org.apache.catalina.realm.JNDIRealm" debug="99"
    connectionURL="ldap://99.999.9.9:389"
    connectionName="CN=connectionId,OU=CO,dc=mycomp,dc=isd"
    connectionPassword="connectionPassword"
    referrals="follow"
    userBase="dc=mycomp,dc=isd"
    userSearch="(&(sAMAccountName={0})(objectClass=user))"
    userSubtree="true"
    roleBase="dc=mycomp, dc=isd"
    roleSearch="(uniqueMember={0})"
    rolename="cn"
    />
    I'd be so grateful for any help.
    Any suggestions about using the data from Active directory in web-application.
    Thanks.
    R.Vaughn

    By this time you probably have already solved this, but I think the problem is that the Search Base is relative to the attachment point specified with the PROVIDER_URL. Since you already specified "DC=mycomp,DC=isd" in that location, you merely want to set the search base to "". The error message is trying to tell you that it could only find half of the "DC=mycomp, DC=isd, DC=mycomp, DC=isd" that you specified for the search base.
    Hope that helps someone.
    Ken Gartner
    Quadrasis, Inc (We Unify Security, www -dot- quadrasis -dot- com)

  • Create a new web application, how shall I update the file server.xml

    Hi,
    I will create a new web application, i.e named newApp. Then I create a file structure as follows:
    - <server-root>/newApp
    - <server-root>/newApp/WEB-INF
    - <server-root>/newApp/WEB-INF/classes
    Then I must tell the server that I have created a new web application. Then I must update my file server.xml, How shall I do this and where in the file shall I type in the new information?
    I use windows XP Pro, and Tomcat 4.1.27.
    My server.xml file looks like below:
    <!-- Example Server Configuration File -->
    <!-- Note that component elements are nested corresponding to their
    parent-child relationships with each other -->
    <!-- A "Server" is a singleton element that represents the entire JVM,
    which may contain one or more "Service" instances. The Server
    listens for a shutdown command on the indicated port.
    Note: A "Server" is not itself a "Container", so you may not
    define subcomponents such as "Valves" or "Loggers" at this level.
    -->
    <Server port="8005" shutdown="SHUTDOWN" debug="0">
    <!-- Comment these entries out to disable JMX MBeans support -->
    <!-- You may also configure custom components (e.g. Valves/Realms) by
    including your own mbean-descriptor file(s), and setting the
    "descriptors" attribute to point to a ';' seperated list of paths
    (in the ClassLoader sense) of files to add to the default list.
    e.g. descriptors="/com/myfirm/mypackage/mbean-descriptor.xml"
    -->
    <Listener className="org.apache.catalina.mbeans.ServerLifecycleListener"
    debug="0"/>
    <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"
    debug="0"/>
    <!-- Global JNDI resources -->
    <GlobalNamingResources>
    <!-- Test entry for demonstration purposes -->
    <Environment name="simpleValue" type="java.lang.Integer" value="30"/>
    <!-- Editable user database that can also be used by
    UserDatabaseRealm to authenticate users -->
    <Resource name="UserDatabase" auth="Container"
    type="org.apache.catalina.UserDatabase"
    description="User database that can be updated and saved">
    </Resource>
    <ResourceParams name="UserDatabase">
    <parameter>
    <name>factory</name>
    <value>org.apache.catalina.users.MemoryUserDatabaseFactory</value>
    </parameter>
    <parameter>
    <name>pathname</name>
    <value>conf/tomcat-users.xml</value>
    </parameter>
    </ResourceParams>
    </GlobalNamingResources>
    <!-- A "Service" is a collection of one or more "Connectors" that share
    a single "Container" (and therefore the web applications visible
    within that Container). Normally, that Container is an "Engine",
    but this is not required.
    Note: A "Service" is not itself a "Container", so you may not
    define subcomponents such as "Valves" or "Loggers" at this level.
    -->
    <!-- Define the Tomcat Stand-Alone Service -->
    <Service name="Tomcat-Standalone">
    <!-- A "Connector" represents an endpoint by which requests are received
    and responses are returned. Each Connector passes requests on to the
    associated "Container" (normally an Engine) for processing.
    By default, a non-SSL HTTP/1.1 Connector is established on port 8080.
    You can also enable an SSL HTTP/1.1 Connector on port 8443 by
    following the instructions below and uncommenting the second Connector
    entry. SSL support requires the following steps (see the SSL Config
    HOWTO in the Tomcat 4.0 documentation bundle for more detailed
    instructions):
    * Download and install JSSE 1.0.2 or later, and put the JAR files
    into "$JAVA_HOME/jre/lib/ext".
    * Execute:
    %JAVA_HOME%\bin\keytool -genkey -alias tomcat -keyalg RSA (Windows)
    $JAVA_HOME/bin/keytool -genkey -alias tomcat -keyalg RSA (Unix)
    with a password value of "changeit" for both the certificate and
    the keystore itself.
    By default, DNS lookups are enabled when a web application calls
    request.getRemoteHost(). This can have an adverse impact on
    performance, so you can disable it by setting the
    "enableLookups" attribute to "false". When DNS lookups are disabled,
    request.getRemoteHost() will return the String version of the
    IP address of the remote client.
    -->
    <!-- Define a non-SSL Coyote HTTP/1.1 Connector on port 8080 -->
    <Connector className="org.apache.coyote.tomcat4.CoyoteConnector"
    port="8080" minProcessors="5" maxProcessors="75"
    enableLookups="true" redirectPort="8443"
    acceptCount="100" debug="0" connectionTimeout="20000"
    useURIValidationHack="false" disableUploadTimeout="true" />
    <!-- Note : To disable connection timeouts, set connectionTimeout value
    to -1 -->
    <!-- Define a SSL Coyote HTTP/1.1 Connector on port 8443 -->
    <!--
    <Connector className="org.apache.coyote.tomcat4.CoyoteConnector"
    port="8443" minProcessors="5" maxProcessors="75"
    enableLookups="true"
    acceptCount="100" debug="0" scheme="https" secure="true"
    useURIValidationHack="false" disableUploadTimeout="true">
    <Factory className="org.apache.coyote.tomcat4.CoyoteServerSocketFactory"
    clientAuth="false" protocol="TLS" />
    </Connector>
    -->
    <!-- Define a Coyote/JK2 AJP 1.3 Connector on port 8009 -->
    <Connector className="org.apache.coyote.tomcat4.CoyoteConnector"
    port="8009" minProcessors="5" maxProcessors="75"
    enableLookups="true" redirectPort="8443"
    acceptCount="10" debug="0" connectionTimeout="0"
    useURIValidationHack="false"
    protocolHandlerClassName="org.apache.jk.server.JkCoyoteHandler"/>
    <!-- Define an AJP 1.3 Connector on port 8009 -->
    <!--
    <Connector className="org.apache.ajp.tomcat4.Ajp13Connector"
    port="8009" minProcessors="5" maxProcessors="75"
    acceptCount="10" debug="0"/>
    -->
    <!-- Define a Proxied HTTP/1.1 Connector on port 8082 -->
    <!-- See proxy documentation for more information about using this. -->
    <!--
    <Connector className="org.apache.coyote.tomcat4.CoyoteConnector"
    port="8082" minProcessors="5" maxProcessors="75"
    enableLookups="true"
    acceptCount="100" debug="0" connectionTimeout="20000"
    proxyPort="80" useURIValidationHack="false"
    disableUploadTimeout="true" />
    -->
    <!-- Define a non-SSL legacy HTTP/1.1 Test Connector on port 8083 -->
    <!--
    <Connector className="org.apache.catalina.connector.http.HttpConnector"
    port="8083" minProcessors="5" maxProcessors="75"
    enableLookups="true" redirectPort="8443"
    acceptCount="10" debug="0" />
    -->
    <!-- Define a non-SSL HTTP/1.0 Test Connector on port 8084 -->
    <!--
    <Connector className="org.apache.catalina.connector.http10.HttpConnector"
    port="8084" minProcessors="5" maxProcessors="75"
    enableLookups="true" redirectPort="8443"
    acceptCount="10" debug="0" />
    -->
    <!-- An Engine represents the entry point (within Catalina) that processes
    every request. The Engine implementation for Tomcat stand alone
    analyzes the HTTP headers included with the request, and passes them
    on to the appropriate Host (virtual host). -->
    <!-- You should set jvmRoute to support load-balancing via JK/JK2 ie :
    <Engine name="Standalone" defaultHost="localhost" debug="0" jmvRoute="jvm1">
    -->
    <!-- Define the top level container in our container hierarchy -->
    <Engine name="Standalone" defaultHost="localhost" debug="0">
    <!-- The request dumper valve dumps useful debugging information about
    the request headers and cookies that were received, and the response
    headers and cookies that were sent, for all requests received by
    this instance of Tomcat. If you care only about requests to a
    particular virtual host, or a particular application, nest this
    element inside the corresponding <Host> or <Context> entry instead.
    For a similar mechanism that is portable to all Servlet 2.3
    containers, check out the "RequestDumperFilter" Filter in the
    example application (the source for this filter may be found in
    "$CATALINA_HOME/webapps/examples/WEB-INF/classes/filters").
    Request dumping is disabled by default. Uncomment the following
    element to enable it. -->
    <!--
    <Valve className="org.apache.catalina.valves.RequestDumperValve"/>
    -->
    <!-- Global logger unless overridden at lower levels -->
    <Logger className="org.apache.catalina.logger.FileLogger"
    prefix="catalina_log." suffix=".txt"
    timestamp="true"/>
    <!-- Because this Realm is here, an instance will be shared globally -->
    <!-- This Realm uses the UserDatabase configured in the global JNDI
    resources under the key "UserDatabase". Any edits
    that are performed against this UserDatabase are immediately
    available for use by the Realm. -->
    <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
    debug="0" resourceName="UserDatabase"/>
    <!-- Comment out the old realm but leave here for now in case we
    need to go back quickly -->
    <!--
    <Realm className="org.apache.catalina.realm.MemoryRealm" />
    -->
    <!-- Replace the above Realm with one of the following to get a Realm
    stored in a database and accessed via JDBC -->
    <!--
    <Realm className="org.apache.catalina.realm.JDBCRealm" debug="99"
    driverName="org.gjt.mm.mysql.Driver"
    connectionURL="jdbc:mysql://localhost/authority"
    connectionName="test" connectionPassword="test"
    userTable="users" userNameCol="user_name" userCredCol="user_pass"
    userRoleTable="user_roles" roleNameCol="role_name" />
    -->
    <!--
    <Realm className="org.apache.catalina.realm.JDBCRealm" debug="99"
    driverName="oracle.jdbc.driver.OracleDriver"
    connectionURL="jdbc:oracle:thin:@ntserver:1521:ORCL"
    connectionName="scott" connectionPassword="tiger"
    userTable="users" userNameCol="user_name" userCredCol="user_pass"
    userRoleTable="user_roles" roleNameCol="role_name" />
    -->
    <!--
    <Realm className="org.apache.catalina.realm.JDBCRealm" debug="99"
    driverName="sun.jdbc.odbc.JdbcOdbcDriver"
    connectionURL="jdbc:odbc:CATALINA"
    userTable="users" userNameCol="user_name" userCredCol="user_pass"
    userRoleTable="user_roles" roleNameCol="role_name" />
    -->
    <!-- Define the default virtual host -->
    <Host name="localhost" debug="0" appBase="webapps"
    unpackWARs="true" autoDeploy="true">
    <!-- Normally, users must authenticate themselves to each web app
    individually. Uncomment the following entry if you would like
    a user to be authenticated the first time they encounter a
    resource protected by a security constraint, and then have that
    user identity maintained across all web applications contained
    in this virtual host. -->
    <!--
    <Valve className="org.apache.catalina.authenticator.SingleSignOn"
    debug="0"/>
    -->
    <!-- Access log processes all requests for this virtual host. By
    default, log files are created in the "logs" directory relative to
    $CATALINA_HOME. If you wish, you can specify a different
    directory with the "directory" attribute. Specify either a relative
    (to $CATALINA_HOME) or absolute path to the desired directory.
    -->
    <!--
    <Valve className="org.apache.catalina.valves.AccessLogValve"
    directory="logs" prefix="localhost_access_log." suffix=".txt"
    pattern="common" resolveHosts="false"/>
    -->
    <!-- Logger shared by all Contexts related to this virtual host. By
    default (when using FileLogger), log files are created in the "logs"
    directory relative to $CATALINA_HOME. If you wish, you can specify
    a different directory with the "directory" attribute. Specify either a
    relative (to $CATALINA_HOME) or absolute path to the desired
    directory.-->
    <Logger className="org.apache.catalina.logger.FileLogger"
    directory="logs" prefix="localhost_log." suffix=".txt"
    timestamp="true"/>
    <!-- Define properties for each web application. This is only needed
    if you want to set non-default properties, or have web application
    document roots in places other than the virtual host's appBase
    directory. -->
         <DefaultContext reloadable="true"/>
    <!-- Tomcat Root Context -->
    <Context path="" docBase="ROOT" debug="0"/>
    <!-- Tomcat Examples Context -->
    <Context path="/examples" docBase="examples" debug="0"
    reloadable="true" crossContext="true">
    <Logger className="org.apache.catalina.logger.FileLogger"
    prefix="localhost_examples_log." suffix=".txt"
    timestamp="true"/>
    <Ejb name="ejb/EmplRecord" type="Entity"
    home="com.wombat.empl.EmployeeRecordHome"
    remote="com.wombat.empl.EmployeeRecord"/>
    <!-- If you wanted the examples app to be able to edit the
    user database, you would uncomment the following entry.
    Of course, you would want to enable security on the
    application as well, so this is not done by default!
    The database object could be accessed like this:
    Context initCtx = new InitialContext();
    Context envCtx = (Context) initCtx.lookup("java:comp/env");
    UserDatabase database =
    (UserDatabase) envCtx.lookup("userDatabase");
    -->
    <!--
    <ResourceLink name="userDatabase" global="UserDatabase"
    type="org.apache.catalina.UserDatabase"/>
    -->
    <!-- PersistentManager: Uncomment the section below to test Persistent
    Sessions.
    saveOnRestart: If true, all active sessions will be saved
    to the Store when Catalina is shutdown, regardless of
    other settings. All Sessions found in the Store will be
    loaded on startup. Sessions past their expiration are
    ignored in both cases.
    maxActiveSessions: If 0 or greater, having too many active
    sessions will result in some being swapped out. minIdleSwap
    limits this. -1 or 0 means unlimited sessions are allowed.
    If it is not possible to swap sessions new sessions will
    be rejected.
    This avoids thrashing when the site is highly active.
    minIdleSwap: Sessions must be idle for at least this long
    (in seconds) before they will be swapped out due to
    activity.
    0 means sessions will almost always be swapped out after
    use - this will be noticeably slow for your users.
    maxIdleSwap: Sessions will be swapped out if idle for this
    long (in seconds). If minIdleSwap is higher, then it will
    override this. This isn't exact: it is checked periodically.
    -1 means sessions won't be swapped out for this reason,
    although they may be swapped out for maxActiveSessions.
    If set to >= 0, guarantees that all sessions found in the
    Store will be loaded on startup.
    maxIdleBackup: Sessions will be backed up (saved to the Store,
    but left in active memory) if idle for this long (in seconds),
    and all sessions found in the Store will be loaded on startup.
    If set to -1 sessions will not be backed up, 0 means they
    should be backed up shortly after being used.
    To clear sessions from the Store, set maxActiveSessions, maxIdleSwap,
    and minIdleBackup all to -1, saveOnRestart to false, then restart
    Catalina.
    -->
    <!--
    <Manager className="org.apache.catalina.session.PersistentManager"
    debug="0"
    saveOnRestart="true"
    maxActiveSessions="-1"
    minIdleSwap="-1"
    maxIdleSwap="-1"
    maxIdleBackup="-1">
    <Store className="org.apache.catalina.session.FileStore"/>
    </Manager>
    -->
    <Environment name="maxExemptions" type="java.lang.Integer"
    value="15"/>
    <Parameter name="context.param.name" value="context.param.value"
    override="false"/>
    <Resource name="jdbc/EmployeeAppDb" auth="SERVLET"
    type="javax.sql.DataSource"/>
    <ResourceParams name="jdbc/EmployeeAppDb">
    <parameter><name>username</name><value>sa</value></parameter>
    <parameter><name>password</name><value></value></parameter>
    <parameter><name>driverClassName</name>
    <value>org.hsql.jdbcDriver</value></parameter>
    <parameter><name>url</name>
    <value>jdbc:HypersonicSQL:database</value></parameter>
    </ResourceParams>
    <Resource name="mail/Session" auth="Container"
    type="javax.mail.Session"/>
    <ResourceParams name="mail/Session">
    <parameter>
    <name>mail.smtp.host</name>
    <value>localhost</value>
    </parameter>
    </ResourceParams>
    <ResourceLink name="linkToGlobalResource"
    global="simpleValue"
    type="java.lang.Integer"/>
    </Context>
    </Host>
    </Engine>
    </Service>
    </Server>

    To use servlets u have indeed to update your web.xml...Well I'm not sure this is relevant to your case anyway.
    You have to add a <servlet> element to this file.
    Something like this:
    <servlet>
    <servlet-name>blabla</servlet-name>
    <servlet-class>blablapackage.Blablaclass</servlet-class>
    <init-param>...</init-param>
    </servlet>
    Now this may not solve your problem. Make sure you refer to your servlets using their full qualified names.btw, just to be sure, what is your definition of "servlet"? (i mean: any java class or only javax.servlet.Servlet)

  • Error when sending email from a web application that runs on GlassFish

    Hello all, I hope some can give me some hints on how to fix this problem.
    I have a web application built in Java that runs on GlassFish v3.
    The application uses a mail plugin that makes use of mail.jar
    Whenever I try to use the plugin to send an email out I get an error.
    The application is programmed to send emails from a gmail account, and I believe there is a problem with the SSL version that Googlemail is expecting.
    By the way, everything works fine if I run the web app on other servers like Jetty or Apache.
    The stacktrace I get from the log when the error occurs is as follows:
    INFO: 2009-05-08 19:48:57,500 [httpWorkerThread-8080-0] ERROR errors.GrailsExceptionResolver - org.springframework.mail.MailSendException: Mail server connection failed; nested exception is javax.mail.MessagingException: Could not connect to SMTP host: smtp.gmail.com, port: 465;
    nested exception is:
    java.net.SocketException: java.security.NoSuchAlgorithmException: Error constructing implementation (algorithm: Default, provider: SunJSSE, class: com.sun.net.ssl.internal.ssl.DefaultSSLContextImpl)
    org.codehaus.groovy.runtime.InvokerInvocationException: org.springframework.mail.MailSendException: Mail server connection failed; nested exception is javax.mail.MessagingException: Could not connect to SMTP host: smtp.gmail.com, port: 465;
    nested exception is:
    java.net.SocketException: java.security.NoSuchAlgorithmException: Error constructing implementation (algorithm: Default, provider: SunJSSE, class: com.sun.net.ssl.internal.ssl.DefaultSSLContextImpl)
    at org.apache.catalina.core.ApplicationFilterChain.servletService(ApplicationFilterChain.java:431)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:337)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:218)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:250)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:218)
    at org.apache.catalina.core.ApplicationDispatcher.doInvoke(ApplicationDispatcher.java:883)
    at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:732)
    at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:554)
    at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:485)
    at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:377)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:250)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:218)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:250)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:218)
    at org.jsecurity.web.servlet.JSecurityFilter.doFilterInternal(JSecurityFilter.java:382)
    at org.jsecurity.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:180)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:250)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:218)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:250)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:218)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:250)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:218)
    at org.apache.catalina.core.StandardWrapperValve.preInvoke(StandardWrapperValve.java:460)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:139)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:186)
    at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:719)
    at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:657)
    at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:96)
    at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:98)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:187)
    at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:719)
    at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:657)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:651)
    at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1030)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:142)
    at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:719)
    at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:657)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:651)
    at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1030)
    at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:325)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:242)
    at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:180)
    at com.sun.grizzly.http.DefaultProcessorTask.invokeAdapter(DefaultProcessorTask.java:633)
    at com.sun.grizzly.http.DefaultProcessorTask.doProcess(DefaultProcessorTask.java:570)
    at com.sun.grizzly.http.DefaultProcessorTask.process(DefaultProcessorTask.java:827)
    at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:152)
    at com.sun.enterprise.v3.services.impl.GlassfishProtocolChain.executeProtocolFilter(GlassfishProtocolChain.java:71)
    at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:103)
    at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:89)
    at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:76)
    at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:67)
    at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:56)
    at com.sun.grizzly.util.WorkerThreadImpl.processTask(WorkerThreadImpl.java:325)
    at com.sun.grizzly.util.WorkerThreadImpl.run(WorkerThreadImpl.java:184)
    Any help would be really appreciated... honestly I'm pretty stuck.
    Alex

    Hi Alex,
    Since I had a Gmail test servlet kicking around, I ran it on the latest V3 nightly build.
    On the first run, I encountered the following nested exceptions:
    javax.mail.MessagingException: Could not connect to SMTP host: smtp.gmail.com, port: 465
    --> java.net.SocketException: java.security.NoSuchAlgorithmException: Error constructing implementation (algorithm: Default, provider: SunJSSE, class: com.sun.net.ssl.internal.ssl.DefaultSSLContextImpl)
        --> java.security.NoSuchAlgorithmException: Error constructing implementation (algorithm: Default, provider: SunJSSE, class: com.sun.net.ssl.internal.ssl.DefaultSSLContextImpl)
            --> java.security.UnrecoverableKeyException: Password must not be nullThe UnrecoverableKeyException is a manifestation of [https://glassfish.dev.java.net/issues/show_bug.cgi?id=6938|https://glassfish.dev.java.net/issues/show_bug.cgi?id=6938]
    I worked around this by adding the following JVM config options to domain.xml
    <jvm-options>-Djavax.net.ssl.keyStorePassword=changeit</jvm-options>
    <jvm-options>-Djavax.net.ssl.trustStorePassword=changeit</jvm-options> (Note: the default master password is "changeit")
    These lines are placed in /domain/configs/config/java-config of domain.xml for the particular server config you're using. There's only one server config in the default domain.xml shipped with V3. Then restart the server.
    I retested the code on both port 465 and 587, with and without the above config changes. Without the change, they both fail the same way, and with the change, they both work. Let me know if this helps.
    -Peter

  • Javax.mail.MessagingException

    HI all,
    i am new to this area and currently i am working on email messaging application.
    in here i have set up an SMTP server and every thing, but finally it gives following exception
    javax.mail.SendFailedException: Sending failed;
    nested exception is:
         javax.mail.MessagingException: 550 Sorry, <[email protected]> is not allowed access from your location
    can you please help me to solve this problem
    thanx
    Kelum

    hi,
    thanx for your reply...i checked JavaMail faq.
    it says
    This is an error reply from your SMTP mail server. It indicates that your mail server is not configured to allow you to send mail through it.
    actually my application is a servlet. that means do we have to give any permisions to my web server to send requests to smtp server.
    do you have any idea abot this
    thanx
    Kelum

  • Looking up external JNDI (JBOSS Namely) from web applications.

    Hi,
    I am unable to look up names bound to JBOSS JNDI from external web apps.
    Dump of the JBOSS JNDI
    java: Namespace
    +- XAConnectionFactory (class: org.jboss.mq.SpyXAConnectionFactory)
    +- DefaultDS (class: javax.sql.DataSource)
    +- SecurityProxyFactory (class: org.jboss.security.SubjectSecurityProxyFactory)
    +- ABTestDS (class: javax.sql.DataSource)
    +- DefaultJMSProvider (class: org.jboss.jms.jndi.JNDIProviderAdapter)
    +- comp (class: javax.naming.Context)
    +- JmsXA (class: org.jboss.resource.adapter.jms.JmsConnectionFactoryImpl)
    +- ConnectionFactory (class: org.jboss.mq.SpyConnectionFactory)
    +- jaas (class: javax.naming.Context)
    | +- JmsXARealm (class: org.jboss.security.plugins.SecurityDomainContext)
    | +- jbossmq (class: org.jboss.security.plugins.SecurityDomainContext)
    | +- HsqlDbRealm (class: org.jboss.security.plugins.SecurityDomainContext)
    +- timedCacheFactory (class: javax.naming.Context)
    Failed to lookup: timedCacheFactory, errmsg=null
    +- TransactionPropagationContextExporter (class: org.jboss.tm.TransactionPropagationContextFactory)
    +- StdJMSPool (class: org.jboss.jms.asf.StdServerSessionPoolFactory)
    +- Mail (class: javax.mail.Session)
    +- TransactionPropagationContextImporter (class: org.jboss.tm.TransactionPropagationContextImporter)
    +- TransactionManager (class: org.jboss.tm.TxManager)
    +- hibernate (class: org.jnp.interfaces.NamingContext)
    | +- SessionFactory (class: org.hibernate.impl.SessionFactoryImpl)
    Global JNDI Namespace
    +- XAConnectionFactory (class: org.jboss.mq.SpyXAConnectionFactory)
    +- UIL2ConnectionFactory[link -> ConnectionFactory] (class: javax.naming.LinkRef)
    +- UserTransactionSessionFactory (proxy: $Proxy11 implements interface org.jboss.tm.usertx.interfaces.UserTransactionSessionFactory)
    +- HTTPConnectionFactory (class: org.jboss.mq.SpyConnectionFactory)
    +- console (class: org.jnp.interfaces.NamingContext)
    | +- PluginManager (proxy: $Proxy37 implements interface org.jboss.console.manager.PluginManagerMBean)
    +- UIL2XAConnectionFactory[link -> XAConnectionFactory] (class: javax.naming.LinkRef)
    +- UUIDKeyGeneratorFactory (class: org.jboss.ejb.plugins.keygenerator.uuid.UUIDKeyGeneratorFactory)
    +- HTTPXAConnectionFactory (class: org.jboss.mq.SpyXAConnectionFactory)
    +- topic (class: org.jnp.interfaces.NamingContext)
    | +- testDurableTopic (class: org.jboss.mq.SpyTopic)
    | +- testTopic (class: org.jboss.mq.SpyTopic)
    | +- securedTopic (class: org.jboss.mq.SpyTopic)
    +- queue (class: org.jnp.interfaces.NamingContext)
    | +- A (class: org.jboss.mq.SpyQueue)
    | +- testQueue (class: org.jboss.mq.SpyQueue)
    | +- ex (class: org.jboss.mq.SpyQueue)
    | +- DLQ (class: org.jboss.mq.SpyQueue)
    | +- D (class: org.jboss.mq.SpyQueue)
    | +- C (class: org.jboss.mq.SpyQueue)
    | +- B (class: org.jboss.mq.SpyQueue)
    +- ConnectionFactory (class: org.jboss.mq.SpyConnectionFactory)
    +- UserTransaction (class: org.jboss.tm.usertx.client.ClientUserTransaction)
    +- jmx (class: org.jnp.interfaces.NamingContext)
    | +- invoker (class: org.jnp.interfaces.NamingContext)
    | | +- RMIAdaptor (proxy: $Proxy36 implements interface org.jboss.jmx.adaptor.rmi.RMIAdaptor,interface org.jboss.jmx.adaptor.rmi.RMIAdaptorExt)
    | +- rmi (class: org.jnp.interfaces.NamingContext)
    | | +- RMIAdaptor[link -> jmx/invoker/RMIAdaptor] (class: javax.naming.LinkRef)
    +- HiLoKeyGeneratorFactory (class: org.jboss.ejb.plugins.keygenerator.hilo.HiLoKeyGeneratorFactory)
    +- UILXAConnectionFactory[link -> XAConnectionFactory] (class: javax.naming.LinkRef)
    +- UILConnectionFactory[link -> ConnectionFactory] (class: javax.naming.LinkRef)
    I have an external web application that has
    jndi.properties in the classpath -- JBOSS is running on localhost
    java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
    java.naming.provider.url=jnp://localhost:1099
    java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces
    web.xml for my external webapp
    <resource-ref>
    <res-ref-name>jdbc/ABTestDS</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
    </resource-ref>
    <resource-ref >
    <res-ref-name>hibernate/SessionFactory</res-ref-name>
    <res-type>net.sf.hibernate.SessionFacory</res-type>
    <res-auth>Container</res-auth>
    </resource-ref>
    Mycode:
    try {
    Context ctx = new InitialContext();
    sessionFactory = (SessionFactory) ctx.lookup("java:comp/env/hibernate/SessionFactory");
    } catch (ClassCastException cce) {
    throw new ServiceLocatorException(cce);
    } catch (NamingException ne) {
    throw new ServiceLocatorException(ne);
    I get a NamingException.
    Any hints would be really appreciated.
    thanks
    MH

    I have hte same question
    Hey DID you figure it out?
    let me know please
    maybe by email:
    [email protected]
    THANKS A LOT

  • Javax.mail. package not recognised

    Hi people!!!!
    Please help me out as I am new to j2ee/JavaMail
    I have the j2ee sdk 1.4 installed as well as j2se1.4.2/netbeans conbundle.
    I would create to a simple application that sends an email. However, the compiler doesn't recognise the javax.mail.* and javax.mail.internet.* packages.
    When I type j2ee -verbose at the command prompt it states that it doesn't recognise the command.
    I have set my environment variables as follows:
    J2EE_PATH:      C:\Sun\AppServer\
    J2EE_HOME:     C:\Sun\AppServer\
    JAVA_HOME:     C:\Program Files\j2sdk_nb\j2sdk1.4.2\
    System Variables:
    CLASSPATH:     C:\Sun\AppServer\lib\j2ee.jar
    PATH:     %SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;C:\MSSQL7\BINN;C:\Program Files\j2sdk_nb\j2sdk1.4.2\bin\;C:\TOOLS\Tomcat4.1\webapps\Intranet\WEB-INF\classes\;C:\Sun\AppServer\bin\
    Do perhaps know what I have not done correctly....
    Thanks, any assistance will be much appreciated.
    You may email your answers to me at [a href='mailto:[email protected]'][email protected][\a] if you wish
    Regards
    Ushanta

    Hey I have added the mail.jar file to my classpath and I don't get this error any more.... Unfortunately, though I get a java.lang.NoClassDefFoundError Exception in thread 'main'
    I do have a main method, here is my code:
    import javax.mail.*;
    import javax.mail.internet.*;
    import java.util.Properties;
    import java.io.*;
    * @author user
    public class SimpleSender {
    /** Creates a new instance of SimpleSender */
    public SimpleSender() {
    public static void main(String[] args) {
    if (args.length != 3) {
    System.out.println("ERROR");
    System.exit(1);
    String host = args[0];
    String to = args[1];
    String from = args[2];
    String contentType = "text/html";
    Properties props = System.getProperties();
    props.put("mail.smtp.host", args[0]);
    try{
    Session session = Session.getDefaultInstance(props, null);
    MimeMessage message = new MimeMessage(session);
    message.setSubject("Hello");
    message.setFrom(new InternetAddress(from));
    message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
    String text = "<h1>testing email</h1>";
    message.setContent(text, "text/html");
    Transport.send(message);
    } catch (MessagingException e) {
    e.printStackTrace();
    }

Maybe you are looking for

  • Why are kuler colors different to Photoshop and Illustrator?

    When I make some colours in kuler, I get RGB and CMYK numbers for them. When I enter the RGB into Photoshop I get different CMYK values. When I enter the CMYK into Illustrator, I get different RBG values. Which do I believe?? I guess that this must b

  • Tasks not being logged in BPM worklist app for AIAIntegrationAdminUser

    Hi all, As per error handling framework in AIA, i read that whenever a partnerlink error occurs in BPEL process, it goes to the fault policy in the server, performs the action defined in fault policy and then sends erro notification to the role defin

  • Grouping two sections in one report

    Hello, I am newbie to Crystal Reports.I have one doubt in designing a report. The proto for the report is: Date: XX:XX:XXXX                                 Sales Report - Value S No     Item         Increase    Decrease 1           XXX 2           YY

  • Checking the time before code execution..

    public boolean checker(int mins) {           int minutes = 0;           while (mins!=minutes) {                Calendar cal = new GregorianCalendar();                    minutes = cal.get(Calendar.MINUTE);           return true;      }I am building a

  • CS5 Merge to HDR Pro. Cannot see images? Or something else???

    Hello, I am unable to use the automated Merge to HDR Pro.. at all. Either from Bridge or PS File >auto>select files etc.. I select the files (tiffs) and click Go/OK whatever and the images appear for a few seconds each , then a transparent layer and