[jboss-user] [Javassist user questions] - JNDI and java: context problem

fla83tn do-not-reply at jboss.com
Sun Jul 23 20:35:24 EDT 2006


Hi, 
In my project I'd like to send an e-mail from my message-driven bean but I have 2 problem.
First of all this is my problematic code:

  | 
  |   private void send(Context c,String to){
  |     javax.mail.Session session = null;
  | 
  |         try {
  |           
  |             session = ---- see after ----- 
  | 
  |             MimeMessage m = new MimeMessage(session);
  |             m.setFrom();
  | 
  |             m.setRecipients(javax.mail.Message.RecipientType.TO,
  |                             InternetAddress.parse(to, false));
  |             m.setSubject("Pinestore Order confirmation");
  |             m.setSentDate(new Date());
  |             m.setContent("The Order has been processed",
  |                          "text/plain"); //equivalent to setText..
  |             Store s = session.getStore();
  |             s.connect(); // POP authentication
  |             Transport.send(m);
  | 
  |             System.out.println("Message sent OK.");
  |         } catch (javax.mail.MessagingException e) {
  |             e.printStackTrace();
  |         } catch (javax.naming.NamingException e) {
  |               e.printStackTrace();
  |        }
  |   }
  | 
  |   public static void main(String args[]){
  |     Context c = null;
  |     try {
  |      Hashtable environment = new Hashtable();
  |     environment.put(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory");
  |     environment.put(Context.URL_PKG_PREFIXES, "org.jboss.naming:org.jnp.interfaces");
  |     environment.put(Context.PROVIDER_URL, "jnp://localhost:1099");
  |       c =new InitialContext(environment);
  | 
  |     }
  |     catch (NamingException ex) {
  |     }
  |     send(c,"xxx at domain");
  |   }
  | 
This are my question:

  | this  is only  because I have some confusion:
  | Why couldn't I access to resources in jndi at java:comp/env? 
  | If I do
  | 
  |   | Context c = b.getInitialContext();
  |   | Context compEnv = (Context) c.lookup("java:comp/env");
  |   | 
  | compEnv is null..the only things that work is c.lookup("") or lookup of everything that is located under Global JNDI Namespace..
  | 
  | 
  |   | My second question is:
  |   | If I leave the default <attribute name="JNDIName">java:/Mail</attribute>  in file mail-service.xml I can't manage to lookup via jndi to the MBean...this because the java: context seems to be invisible..only names that are in Global JNDI Namespace are visible..
  |   |  
  |  
  |  
  |   | So I try to get around the problem modifying the file mail-service.xml as <attribute name="JNDIName">Mail</attribute>  so now I can do in my code:
  |   | 
  |   |   |  session = (javax.mail.Session)PortableRemoteObject.narrow(
  |   |   |               c.lookup("Mail"), javax.mail.Session.class);
  |   |   | 
  |   | In this case the lookup works, but now I get still error because javax.mail.Session isn't a remote interface and then I can not do a PortableRemoteObject.narrow... 
  |   | 
  | 
  | 
  | Somewhere I read that:
  | 
  | "objects referenced behind the java: root are not reachable by external JNDI calls, they are private to the VM of the server." 
  | 
  | Is it true? How can I solve the problem?
  | 
  | Instead for the last error I don't know how to bind the result of the lookup..
  | 
  | Please somebody help me!!!!!

View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3960213#3960213

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3960213



More information about the jboss-user mailing list