[
https://issues.jboss.org/browse/WELD-994?page=com.atlassian.jira.plugin.s...
]
Marek Schmidt edited comment on WELD-994 at 3/9/12 10:48 AM:
-------------------------------------------------------------
Well, for me the most important point is that currently it doesn't work anyway in
weld. The above example will break on cluster as it fails during session replication, as
it keeps the references on those non-serializable instances created with Instance... (at
least it does seem to be the case on AS7.1.0.Final)
was (Author: maschmid):
Well, for me the most important point is that currently it doesn't work anyway in
weld. The above example will break on cluster as it fails during session replication, as
it keeps the references on those non-serializable instances created with Instance...
Passivating Beans do not allow Injection of non-serializable Instance
injections
--------------------------------------------------------------------------------
Key: WELD-994
URL:
https://issues.jboss.org/browse/WELD-994
Project: Weld
Issue Type: Bug
Components: Producers (Methods, Fields and Disposers)
Affects Versions: 1.1.2.Final
Environment: AS 7.0.2
WELD-000900 1.1.2 (Final)
Reporter: Cody Lerum
Assignee: Marko Lukša
Fix For: 1.2.0.Beta1
Given the following Code
{code:java}
@ConversationScoped
@Named
public class EmailTester implements Serializable {
private static final long serialVersionUID = 1L;
@Inject
private Instance<MailMessage> mailMessage;
@Inject
private ActiveUser activeUser;
@Inject
private Messages messages;
@Inject
private Instance<Session> session;
public void send()
{
MailMessage m = mailMessage.get();
m.from(activeUser.getUser());
m.to(activeUser.getUser());
m.subject("test");
m.bodyText("Blah blah blah");
m.send(session.get());
messages.info("Message Sent");
}
}
{code}
Weld throws
org.jboss.weld.exceptions.IllegalProductException: WELD-000054 Producers cannot produce
non-serializable instances for injection into non-transient fields of passivating
beans\\n\\nProducer\: Producer Method [Session] with qualifiers [@Any @Default] declared
as [[method] @Produces @ExtensionManaged public
org.jboss.seam.mail.core.MailSessionProducer.getMailSession(MailConfig)]\\nInjection
Point\: org.jboss.weld.bean.builtin.InstanceImpl$InstanceInjectionPoint@2146ca:
javax.faces.FacesException: #{emailTester.send()}:
org.jboss.weld.exceptions.IllegalProductException: WELD-000054 Producers cannot produce
non-serializable instances for injection into non-transient fields of passivating
beans\\n\\nProducer\: Producer Method [Session] with qualifiers [@Any @Default] declared
as [[method] @Produces @ExtensionManaged public
org.jboss.seam.mail.core.MailSessionProducer.getMailSession(MailConfig)]\\nInjection
Point\: org.jboss.weld.bean.builtin.InstanceImpl$InstanceInjectionPoint@2146ca
Since a new instance is returned each time a get() is called it should not matter that
the javax.mail.Session is not non-serializable
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.jboss.org/secure/ContactAdministrators!default.jspa
For more information on JIRA, see:
http://www.atlassian.com/software/jira