Details
-
Bug
-
Resolution: Won't Do
-
Major
-
None
-
EJB 3.0 RC3
-
None
-
None
Description
Consider this simple interface:
public interface Echo {
public String doEcho(String myString);
}
And this simple stateless bean (notice the Remote and Local assigned to the same interface:
import javax.ejb.Stateless;
import javax.ejb.Local;
import javax.ejb.Remote;
@Stateless
@Remote (
@Local ( { Echo.class }
)
public class EchoBean implements Echo
{
public String doEcho(String myString)
}
Running this code:
import javax.naming.InitialContext;
public class Ejb3Test {
Echo myEcho;
public void doEjb3Test()
{
try
catch (Exception e)
{ e.printStackTrace(); }}
public static void main(String[] args)
{ Ejb3Test myTest = new Ejb3Test(); myTest.doEjb3Test(); }}
The server error is:
java.lang.ClassCastException: javax.naming.Reference
at org.jboss.ejb3.LocalProxy.readObject(LocalProxy.java:50)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:919)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1813)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1713)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1299)
at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1912)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1836)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1713)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1299)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:339)
at java.rmi.MarshalledObject.get(MarshalledObject.java:135)
at org.jnp.interfaces.MarshalledValuePair.get(MarshalledValuePair.java:57)
at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:637)
at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:572)
at javax.naming.InitialContext.lookup(InitialContext.java:351)
at Ejb3Test.doEjb3Test(Ejb3Test.java:27)
at Ejb3Test.main(Ejb3Test.java:41)
However, if the @Local and @Remote are assigned to diferent interfaces, all goes well.
Thanks,
Zé
Attachments
Issue Links
- is related to
-
EJBTHREE-751 @Local and @Remote on one interface must not be allowed
- Closed