I writed a java application that useing weblogic mail session outside weblogic ,show full codes,
<mycode>
import ........;
public class WebligicMail {
private Session mailSession;
public static void main(String[] args) {
WebligicMail weblogicMail = new WebligicMail();
try {
weblogicMail.init();
} catch (NamingException e) {
e.printStackTrace();
return;
}
try {
weblogicMail.sendMail("dliu@cn.test","test test");
} catch (MessagingException e) {
e.printStackTrace();
}
}
private void init() throws NamingException {
Properties h = new Properties();
h.put(Context.INITIAL_CONTEXT_FACTORY,"weblogic.jndi.WLInitialContextFactory");
h.put(Context.PROVIDER_URL,"t3://localhost:7001"); // provider url is right
h.put(Context.SECURITY_PRINCIPAL,"weblogic");
h.put(Context.SECURITY_CREDENTIALS,"password");
Context namingContext = new InitialContext(h);
Session mailSession = (Session) namingContext.lookup("jndi/mail");
}
public void sendMail(String mailTo, String context) throws MessagingException {
Message msg = new MimeMessage(mailSession);
msg.setFrom();
msg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(
mailTo, false));
msg.setSubject("test weblogic mail");
msg.setSentDate(new Date());
// Content is stored in a MIME multi-part
// message// with one body partMimeBodyPart
MimeBodyPart mbp = new MimeBodyPart();
mbp.setText(context);
Multipart mp = new MimeMultipart();
mp.addBodyPart(mbp);
msg.setContent(mp);
Transport.send(msg);
}
}
</mycode>
<errors>
javax.naming.ConfigurationException. Root exception is java.rmi.MarshalException: error marshalling return; nested exception is:
java.io.NotSerializableException: javax.mail.Session
at weblogic.rjvm.BasicOutboundRequest.sendReceive(BasicOutboundRequest.java:108)
at weblogic.rmi.cluster.ReplicaAwareRemoteRef.invoke(ReplicaAwareRemoteRef.java:284)
at weblogic.rmi.cluster.ReplicaAwareRemoteRef.invoke(ReplicaAwareRemoteRef.java:244)
at weblogic.jndi.internal.ServerNamingNode_WLStub.lookup(Unknown Source)
at weblogic.jndi.internal.WLContextImpl.lookup(WLContextImpl.java:337)
at weblogic.jndi.internal.WLContextImpl.lookup(WLContextImpl.java:332)
at javax.naming.InitialContext.lookup(InitialContext.java:347)
at com.dsii.mail.weblogic.WebligicMail.init(WebligicMail.java:60)
at com.dsii.mail.weblogic.WebligicMail.main(WebligicMail.java:36)
Caused by: java.io.NotSerializableException: javax.mail.Session
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1054)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:278)
at weblogic.common.internal.ChunkedObjectOutputStream.writeObject(ChunkedObjectOutputStream.java:106)
at weblogic.rjvm.MsgAbbrevOutputStream.writeObject(MsgAbbrevOutputStream.java:93)
at weblogic.jndi.internal.RootNamingNode_WLSkel.invoke(Unknown Source)
at weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:407)
at weblogic.rmi.cluster.ReplicaAwareServerRef.invoke(ReplicaAwareServerRef.java:108)
at weblogic.rmi.internal.BasicServerRef$1.run(BasicServerRef.java:356)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:353)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:123)
at weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.java:351)
at weblogic.rmi.internal.BasicExecuteRequest.execute(BasicExecuteRequest.java:30)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:178)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:151)
</errors>
what's wrong?
thanks!