Hi all,

In my efforts to work work with velocity to generate tempalted emails, 
I got stuck with the classLoading problems, which I don't seem to pass.

I get the followig error:

" Unable to find resource 'resources.UserLoginInfo.vm' " 

I tried a more general test to just load a simple properties file
and failed too...


  |  ClassLoader classLoader = this.getClass().getClassLoader();
  | InputStream istream = 
classLoader.getResourceAsStream("resources.application.properties");
  | 

Note: the resource name is with a dot "." resource.application.propperties.
Now, it's strange cause the struts modules picks it up without any problem. Though 
here I called these lines from a method in one of my EJB entities. Anyway, in return I 
get null.

My application is contains the Logic (and EJB module) and Web (web module). the 
UserLoginInfo.vm is located under the resources directory. 

Here is my Emailer.java: 

Code: 


  | /**
  |  * A utility class that provides API for sending 
  |  * templated emails per application use case. 
  |  * <p>The <code>Emailer</code> uses Velocity SDK to generate
  |  * the templated emails.
  |  * 
  |  * @author  Erez Efrati
  |  * @version $Revision:$ $Date:$
  |  */
  | public class Emailer {
  | 
  |     /**
  |      * JNDI context for JavaMail sessions.
  |      */
  |     private static final String JNDI_JAVA_MAIL = "java:/Mail";
  |     
  |     /**
  |      * The content type of the HTML email messages.
  |      */
  |     private static final String HTML_CONTENT_TYPE = "text/html;charset=UTF-8";
  |     
  |     /**
  |      * The user-login-info email template resource name.
  |      */
  |     private static final String VM_USER_LOGIN_INFO_REMINDER 
  |                                                     = "resources.UserLoginInfo.vm";
  | 
  |     // Velocity variable names keys
  |     private static final String VMVAR_USER = "user";
  |     private static final String VMVAR_SUBJECT = "subject";
  | 
  |     /**
  |      * the engine instance
  |      */
  |     VelocityEngine m_engine = new VelocityEngine ();
  | 
  |     // ------------------------------------------------------ Private Methods
  | 
  | 
  |     /**
  |      * Configures the engine to use classpath to find templates
  |      * 
  |      * @param engine                the engine to configure
  |      * @throws Exception    thrown if an errors occures
  |      */
  |     private void configure (VelocityEngine engine) throws Exception 
  |     {
  |             Properties props = new Properties ();
  |             props.setProperty (VelocityEngine.RESOURCE_LOADER, "classpath");
  |             props.setProperty ("classpath." + VelocityEngine.RESOURCE_LOADER + 
".class",
  |                                                     
ClasspathResourceLoader.class.getName());
  |             m_engine.init (props);
  |     }
  | 
  | 
  |     /**
  |      * Creates a Velocity context
  |      */
  |     private VelocityContext createContext()
  |     {
  |             VelocityContext ctx = new VelocityContext ();
  |             return ctx;
  |     }
  | 
  |     /**
  |      * Retreives a new JavaMail Mime message
  |      * 
  |      * @return
  |      * @throws NamingException
  |      */
  |     private MimeMessage createMimeMessage() throws NamingException 
  |     {
  |             Context initCtx = new InitialContext ();
  |             Session session = (Session)initCtx.lookup (JNDI_JAVA_MAIL);
  |             MimeMessage message = new MimeMessage (session);
  |             return message;
  |     }
  |     
  |     // ------------------------------------------------------ Public Methods
  |     
  |     /**
  |      * Default constructor, configures the velocity engine.
  |      * 
  |      * @throws Exception, if an error occures
  |      */
  |     public Emailer () throws Exception
  |     {
  |             configure (m_engine);
  |     }
  | 
  | 
  |     /**
  |      * Sends an email to the specified <code>user</code> containing
  |      * his login information which includes his username and password.
  |      *  
  |      * @param user
  |      * @throws Exception
  |      */
  |     public void sendUserLoginInfo (User user) throws Exception
  |     {
  |             // retrieve the email template
  |             Template template = m_engine.getTemplate (VM_USER_LOGIN_INFO_REMINDER);
  |             
  |             // prepare the context and store data objects in it
  |             VelocityContext ctx = createContext ();
  |             ctx.put (VMVAR_USER, user);
  |             
  |             // merge the template
  |             StringWriter writer = new StringWriter ();
  |             template.merge (ctx, writer);
  |             writer.close ();
  |                                       
  |             // retrieve the message subject and text. The subject 
  |             // is formulated as part of the email velocity template.
  |             StringBuffer text = writer.getBuffer();
  |             String subject = (String)ctx.get (VMVAR_SUBJECT);
  | 
  |             // create a new message to work with            
  |             MimeMessage message = createMimeMessage ();
  | 
  |             // retrieve the user's email address
  |             String to = user.getEmail ();
  |             
  |             String from = App.getSupportEmailAddress ();
  |             message.setFrom (new InternetAddress (from));
  |             message.addRecipient (Message.RecipientType.TO,
  |                                                       new InternetAddress (to));
  |                       
  |             // set the subject and content
  |             message.setSubject (subject);
  |             message.setContent (text, HTML_CONTENT_TYPE);
  | 
  |             // Send message
  |             Transport.send (message);
  |     
  |     }
  | 
  |     
 



Why doesn't it work? What am I missing? 

One more thing I maybe should point out as well - The emailer 
is called from my 'UserServiceBean' which is a stateless Session bean. 
I hope this is valid, is it? 

I would really appreciate any help here.

Thanks in advance,

Erez 


<a 
href="http://www.jboss.org/index.html?module=bb&op=viewtopic&p=3827633#3827633";>View 
the original post</a>

<a 
href="http://www.jboss.org/index.html?module=bb&op=posting&mode=reply&p=3827633>Reply 
to the post</a>


-------------------------------------------------------
This SF.Net email is sponsored by: IBM Linux Tutorials
Free Linux tutorial presented by Daniel Robbins, President and CEO of
GenToo technologies. Learn everything from fundamentals to system
administration.http://ads.osdn.com/?ad_id=1470&alloc_id=3638&op=click
_______________________________________________
JBoss-user mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-user

Reply via email to