Well, to start with, the org.apache.geronimo.mail package are not the
javamail implementation. That is just the gbeans used by geronimo to
configure the default mail session, If you wish to hide the geronimo
javamail implementation, you would need to hide javax.mail.* and
org.apache.geronimo.javamail.*
Rick
Hearty wrote:
Hi Rick,
My application using POP3 in a different way. Basically I am looking
for to use the application specific "mail.jar" instead of geronimo-mail
since I need to support both tomcat5.5 and geronimo using the same code
base. I have included mail.jar as a dependency jar. But even after tried to
hide the geronimo mail class using
<sys:filter>org.apache.geronimo.mail</sys:filter>, I am getting the same
error.
The following is the code snippet I am using related to POP3.
import javax.mail.Address;
import javax.mail.BodyPart;
import javax.mail.Flags;
import javax.mail.Folder;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Part;
import javax.mail.Session;
import javax.mail.Store;
import javax.mail.URLName;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import javax.mail.internet.MimePart;
public String getValue() {
if ((strings == null) || (strings.length < 4)) {
throw new
FormulaRuntimeException(getMessage("formula.common.invalidInput.header",
info));
}
Element element = getElement();
if (element == null) {
throw new
FormulaRuntimeException(getMessage("formula.MailImport.failed.mailStoreFolder"));
}
User user = getUser();
if (user == null) {
throw new
FormulaRuntimeException(getMessage("formula.MailImport.failed.currentElementOwner"));
// some top folders are created with no owner
}
boolean expunge = false;
if (strings[1].trim().equalsIgnoreCase("true") || strings[1].trim()
.equalsIgnoreCase("yes"))
{
expunge = true;
}
String attachmentAttributeName = null;
if (strings.length >= 5) {
attachmentAttributeName = strings[4];
}
String result = "";
try {
Properties mailProperties = new Properties();
Session session = Session.getInstance(mailProperties);
URLName url = new URLName(strings[0]);
Store store = session.getStore(url);
store.connect();
Folder folder = store.getFolder(url);
folder.open(Folder.READ_WRITE);
Message[] messages = folder.getMessages();
result =
getMessage("formula.MailImport.lastupdate.message.many", messages.length) ;
for (int i = 0; i < messages.length; i++) {
if (messages[i] instanceof MimeMessage) {
MimeMessage message = (MimeMessage) messages[i];
Element subFolder = getMonthFolder(element, message
.getSentDate());
if (subFolder == null) {
result +=
getMessage("formula.MailImport.failed.folderCreate") ;
subFolder = element;
}
createElement(subFolder, user, message, strings[2],
strings[3], attachmentAttributeName);
message.setFlag(Flags.Flag.DELETED, expunge);
}
}
folder.close(expunge);
store.close();
} catch (ClassCastException e) {
log.error("", e);
throw new
FormulaRuntimeException(getMessage("formula.MailImport.failed.attribute.wrongType"));
} catch (Exception e) { // XXX PN nice error messages here
log.error("", e);
throw new
FormulaRuntimeException(getMessage("formula.MailImport.failed.genric.message",
e));
}
return result;
}
Here strings array contains the values as
"pop3://pop3user:[email protected]/Inbox","false","Mails","MID","Attachment","update_interval=1m"
When store.connect(); is called I am getting the
javax.mail.AuthenticationFailedException.
Here pop3 url configuration is not part of any config files. It is as simple
as the user can configure it in a text field on clicking submit, the mail
application will try to fetch the mails if any.
The kind of solution I am looking for is, to use my application specific
mail.jar and avoid the loading of the classes related geronimo-mail.jar.
Rick McGuire wrote:
I'm not completely sure what you're trying to do here. Configuring
SMTPHost and SMTPPort has no connection to the POP3 protocol. That only
controls SMTP protocol. If you need to have POP3 configured, you can
add a POP3Transport gbean to the javamail configuration. However, that
only controls what gets used if you use the MailResource JNDI entry to
obtain the session.
How are you accessing the Session used to obtain the POP3 store
instance? The answer to that question will determine what additional
steps you need to take to get this working.
Rick
Hearty wrote:
I am using Apache Geronimo Server 2.1.3 and I am using POP3 protocol for
my
application mail settings.
I've configured SMTPHost and SMTPPort correctly with
config-subsitution.properties and in the config.xml gbean for javamail
is
loaded.
<module name="org.apache.geronimo.configs/javamail/2.1.3/car">
<gbean name="SMTPTransport">
<attribute name="host">${SMTPHost}</attribute>
<attribute name="port">${SMTPPort}</attribute>
</gbean>
</module>
But I am getting the javax.mail.AuthenticationFailedException. But when I
tried with tomcat 5.5, it is working fine. In tomcat I am using a jar
called
mail.jar.
The second approach I've done as follows [But still I am getting the
javax.mail.AuthenticationFailedException error]
1. I have made <module
name="org.apache.geronimo.configs/javamail/2.1.3/car"
load="false">
2. In geronimo-web.xml, I have added one entry against hidden-classes
<sys:hidden-classes>
<sys:filter>org.apache.geronimo.mail</sys:filter>
</sys:hidden-classes>
3. I have included mail.jar as the dependency jar in geronimo-web.xml as
follows
<sys:dependency>
<sys:groupId>com.telelogic.focalpoint.lib</sys:groupId>
<sys:artifactId>mail</sys:artifactId>
<sys:version>1.3</sys:version>
<sys:type>jar</sys:type>
</sys:dependency>
In the both the approaches I am getting the same error. Since it was
working
fine with mail.jar in tomcat5.5, I preferred to go with the second
approach.
Please help me what additional settings I need to do make the POP3 mail
application to work fine?
If I made any mistakes in configuration please let me know.
javax.mail.AuthenticationFailedException
at javax.mail.Service.connect(Service.java:277)
at javax.mail.Service.connect(Service.java:91)
at javax.mail.Service.connect(Service.java:76)
at MailImport.getValue(MailImport.java:116)
at
com.telelogic.focalpoint.bus.formula.ownformula.ExpressionInfo.getValue(ExpressionInfo.java:115)
at
com.telelogic.focalpoint.bus.formula.FormulaManagerImpl.getExpressionValue(FormulaManagerImpl.java:2946)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at
org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:281)
at
org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:187)
at
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:154)
at
org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:107)
at
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:176)
at
org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:107)
at
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:176)
at
org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:210)
at $Proxy83.getExpressionValue(Unknown Source)
at
com.telelogic.focalpoint.bus.formula.parser.OwnFormulaToken.translateToUserDefined(OwnFormulaToken.java:755)
at
com.telelogic.focalpoint.bus.formula.parser.OwnFormulaToken.getCalculatedValue(OwnFormulaToken.java:417)
at
com.telelogic.focalpoint.bus.formula.parser.Token.getValue(Token.java:98)
at
com.telelogic.focalpoint.bus.formula.parser.Tokens.getValue(Tokens.java:92)
at
com.telelogic.focalpoint.bus.formula.TextFormula.calculateHelper(TextFormula.java:45)
at
com.telelogic.focalpoint.bus.formula.Formula.calculate(Formula.java:145)
at
com.telelogic.focalpoint.pres.controller.FormulaController.evaluate(FormulaController.java:168)
at
com.telelogic.focalpoint.pres.controller.FormulaController.handlePost(FormulaController.java:85)
at
com.telelogic.focalpoint.pres.controller.BaseController.myService(BaseController.java:453)
at
com.telelogic.focalpoint.pres.controller.BaseController.service(BaseController.java:205)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:806)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at
com.telelogic.focalpoint.pres.servletfilter.VersionCheckFilter.doFilter(VersionCheckFilter.java:35)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at
com.telelogic.focalpoint.pres.servletfilter.WebSSOFilter.myDoFilter(WebSSOFilter.java:56)
at
com.telelogic.focalpoint.pres.servletfilter.UriExcludingFilter.doFilter(UriExcludingFilter.java:51)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at
com.telelogic.focalpoint.pres.servletfilter.CurrentUserHandlerFilter.myDoFilter(CurrentUserHandlerFilter.java:52)
at
com.telelogic.focalpoint.pres.servletfilter.UriExcludingFilter.doFilter(UriExcludingFilter.java:51)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at
com.telelogic.focalpoint.pres.servletfilter.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:39)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at
com.telelogic.focalpoint.pres.servletfilter.RequestPrinterFilter.myDoFilter(RequestPrinterFilter.java:56)
at
com.telelogic.focalpoint.pres.servletfilter.UriExcludingFilter.doFilter(UriExcludingFilter.java:51)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at
org.apache.geronimo.tomcat.valve.DefaultSubjectValve.invoke(DefaultSubjectValve.java:56)
at
org.apache.geronimo.tomcat.GeronimoStandardContext$SystemMethodValve.invoke(GeronimoStandardContext.java:406)
at
org.apache.geronimo.tomcat.valve.GeronimoBeforeAfterValve.invoke(GeronimoBeforeAfterValve.java:47)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:568)
at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
at
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Unknown Source)