Java 如何在@create之前设置Seam组件中的属性?
我试图设置组件Java 如何在@create之前设置Seam组件中的属性?,java,seam,jakarta-mail,Java,Seam,Jakarta Mail,我试图设置组件org.jboss.seam.mail.mailSession的以下成员,这些成员定义为: boolean ssl; boolean tls = true; (两者都有getter和setter方法) 在调用用@create注释的create方法之前。 我想阻止框架使用SSL、TLS。mailSession组件检查是否设置了这些MEBER。如果是,它将创建强制javamail使用ssl的属性 到目前为止,我试过: Object comp = Component.getInstan
org.jboss.seam.mail.mailSession
的以下成员,这些成员定义为:
boolean ssl;
boolean tls = true;
(两者都有getter和setter方法)
在调用用@create注释的create方法之前。
我想阻止框架使用SSL、TLS。mailSession组件检查是否设置了这些MEBER。如果是,它将创建强制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位,您会建议修补框架,还是有一种我忽略的更简单的方法?我使用以下顺序解决了这个问题:
@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实例是如何连接到组件的,但现在它可以工作。我使用以下顺序解决它:
@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实例是如何连接到组件的,但现在它可以工作。您是否尝试覆盖MailSession? 但是我不确定它是否有效 类似于
@Name("org.jboss.seam.mail.mailSession")
@Install(precedence=Application)
class MyMailSession extends MailSession {
//override the stuff you want here
}
您是否尝试覆盖邮件会话? 但是我不确定它是否有效 类似于
@Name("org.jboss.seam.mail.mailSession")
@Install(precedence=Application)
class MyMailSession extends MailSession {
//override the stuff you want here
}
根据,您应该能够在组件.xml
配置中直接禁用TLS和SSL:
<mail:mail-session debug="true" tls="false" ssl="false" ... />
您已经尝试过了吗?根据,您应该能够在组件中直接禁用TLS和SSL。xml
配置:
<mail:mail-session debug="true" tls="false" ssl="false" ... />
您已经试过了吗?+1应该可以,因为
应用程序的优先级高于内置的;这意味着将安装MyMailSession
,而不是MailSession
。感谢这种有见地的方法,它更通用,我想我会在某个时候需要它。+1这应该行得通,因为应用程序的优先级高于内置的;这意味着将安装MyMailSession
,而不是MailSession
。感谢这种有见地的方法,它更通用,我想我会在某个时候需要它。非常感谢你,它很有魅力。请你把我问的这个问题的答案抄下来,更具体一点(我当然会接受)@stacker当然,我抄了。我很高兴我能帮上忙。非常感谢你,它很有魅力。请你把我问的这个问题的答案抄下来,更具体一点(我当然会接受)@stacker当然,我抄了。我很高兴我能帮上忙。