[ https://issues.jboss.org/browse/WELD-994?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12675535#comment-12675535 ]
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 _______________________________________________ weld-issues mailing list weld-issues@lists.jboss.org https://lists.jboss.org/mailman/listinfo/weld-issues