我正在尝试设置组件org.jboss.seam.mail.mailSession
的以下成员,这些成员定义为:
boolean ssl;
boolean tls = true;
(两者都有getter和setter方法) 在调用@Create注释的方法之前调用。 我想阻止框架使用SSL,TLS。 mailSession组件检查这些mebers是否已设置。如果是,它会创建强制javamail使用ssl的属性。
我到目前为止尝试过:
Object comp = Component.getInstance("org.jboss.seam.mail.mailSession");
问题:解压缩到无法访问组件的javax.mail.Session。
Object comp = Component.getInstance("org.jboss.seam.mail.mailSession", ScopeType.APPLICATION,false,false);
问题:由于没有创建实例,因此返回null。
Component comp = Component.forName("org.jboss.seam.mail.mailSession");
问题:返回组件而不是实例。
我应该怎么做才能切换2位,你会建议修补框架,还是有一种我忽略的简单方法?
答案 0 :(得分:3)
根据Seam reference manual和Seam forum,您应该可以在components.xml
配置中直接停用TLS和SSL:
<mail:mail-session debug="true" tls="false" ssl="false" ... />
你有没试过?
答案 1 :(得分:2)
您是否尝试覆盖mailSession? 我不确定它是否有效......
的内容
@Name("org.jboss.seam.mail.mailSession")
@Install(precedence=Application)
class MyMailSession extends MailSession {
//override the stuff you want here
}
答案 2 :(得分:1)
我用这个序列解决了它:
@In(create = true)
private Renderer renderer;
...
Component comp = Component.forName("org.jboss.seam.mail.mailSession");
MailSession ms = (MailSession) comp.newInstance();
ms.setDebug(true);
ms.setTls(false);
ms.setSsl(false);
ms = ms.create();
renderer.render("/Mail.xhtml");
我想知道MailSession实例是如何附加到组件的,但是现在它可以工作。