looks like a bug to me. 

We should only issue this problem if the injection is into a method, ct or 
field which has a passivating scope. 
For ct and method injection there will be another factor to consider, which is 
a marker whether the injected method should be stored in the CreationalContext 
(thus also must be Serializable) or not (the injected instance is only used for 
temporarily during the method/ct invocation and not getting stored). But this 
is only CDI-1.1...


LieGrue,
strub




----- Original Message -----
> From: Arne Limburg <[email protected]>
> To: "[email protected]" <[email protected]>
> Cc: 
> Sent: Friday, 10 May 2013, 23:03
> Subject: Re: Possibly invalid passivation capability check
> 
> Hi David,
> 
> Do I read the log correctly and SimpleServlet is @Dependent? Is
> SimpleServlet injected into a passivation-capable bean?
> If not, I agree with you that this is a bug.
> 
> 
> Cheers,
> Arne
> 
> Am 10.05.13 22:55 schrieb "David Blevins" unter 
> <[email protected]>:
> 
>> Since the upgrade to 1.2.0 in we have a test failure.  There's a servlet
>> with constructor injection like so:
>> 
>> 
>>     @Inject
>>     public SimpleServlet(Car car) {
>>         this.car = car;
>>     }
>> 
>> And Car looks like so:
>> 
>>     public class Car {
>>         private final String make = "Lexus", model = "IS 
> 350";
>>         private final int year = 2011;
>>     
>>         public String drive(String name) {
>>             return name + " is on the wheel of a " + year + " 
> " + make +
>> " " + model;
>>         }
>>     }
>> 
>> All deploys fine and everything is injected as expected.  Now the
>> problem.  If you introduce a producer, it fails saying Car is not
>> passivation capable as required by the SimpleServlet injection point.
>> 
>>     public class Car {
>>         private final String make = "Lexus", model = "IS 
> 350";
>>         private final int year = 2011;
>> 
>>         public Car(String ignore) {
>>         }
>> 
>>         public String drive(String name) {
>>             return name + " is on the wheel of a " + year + " 
> " + make +
>> " " + model;
>>         }
>>     }
>> 
>>     public class Foo {
>>     
>>         @Produces @Default
>>         public Car car() {
>>             return new Car("foo");
>>         }
>>     }
>> 
>> 
>> javax.enterprise.inject.IllegalProductException: A producer method or
>> field of scope @Dependent returns an unserializable object for injection
>> into an injection point Constructor Injection Point, constructor name :
>> org.apache.openejb.arquillian.tests.cdi.constructor.SimpleServlet, Bean
>> Owner : [SimpleServlet, Name:null, WebBeans Type:DEPENDENT, API
>> Types:[java.io.Serializable,java.lang.Object,javax.servlet.ServletConfig,o
>> rg.apache.openejb.arquillian.tests.cdi.constructor.SimpleServlet,javax.ser
>> vlet.http.HttpServlet,javax.servlet.Servlet,javax.servlet.GenericServlet],
>> 
>> Qualifiers:[javax.enterprise.inject.Any,javax.enterprise.inject.Default]]
>> that requires a passivation capable dependency
>>     at 
>> org.apache.webbeans.inject.AbstractInjectable.inject(AbstractInjectable.ja
>> va:108)
>>     at 
>> org.apache.webbeans.inject.InjectableConstructor.doInjection(InjectableCon
>> structor.java:80)
>>     at 
>> org.apache.webbeans.portable.InjectionTargetImpl.newInstance(InjectionTarg
>> etImpl.java:253)
>>     at 
>> org.apache.webbeans.portable.InjectionTargetImpl.produce(InjectionTargetIm
>> pl.java:180)
>>     at 
>> org.apache.webbeans.component.AbstractOwbBean.create(AbstractOwbBean.java:
>> 119)
>> 
>> There's debate as if the test is bad or if the check is incorrect.  
> Seems
>> like an OWB bug to me.
>> 
>> Thoughts?
>> 
>> 
>> -David
>> 
>

Reply via email to