Hi all, 

I am using JBoss 4.2.2GA and Java(TM) SE Runtime Environment (build 
1.6.0_05-b13) for my development environment. 

I have a stateless session bean called UtilityBean and an interfaces called 
UtilityBeanLocal, marked with @Local and the bean marked with @stateless and 
implements serializable and the local-interface. 

When I try to make a lookup through InitalContext I get a Proxy-Object, which 
cannot be casted to the local interface.

Stacktrace:
anonymous wrote : 
  | 20:05:44,843 ERROR [STDERR] java.lang.ClassCastException: $Proxy94 cannot 
be cast to test.ejb.stateless.UtilityBeanLocal
  | 20:05:44,843 ERROR [STDERR]         at 
test.service.helper.ApplicationHelper.getApplicationSettings(ApplicationHelper.java:23)
  | 20:05:44,843 ERROR [STDERR]         at 
test.service.helper.RegistrationHelper.isUsernameLongEnough(RegistrationHelper.java:32)
  | 20:05:44,843 ERROR [STDERR]         at 
test.web.beans.RegistrationBean.checkUserComplete(RegistrationBean.java:395)
  | 20:05:44,843 ERROR [STDERR]         at 
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  | 20:05:44,843 ERROR [STDERR]         at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
  | 20:05:44,843 ERROR [STDERR]         at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
  | 20:05:44,843 ERROR [STDERR]         at 
java.lang.reflect.Method.invoke(Method.java:597)
  | 20:05:44,843 ERROR [STDERR]         at 
org.apache.el.parser.AstValue.invoke(AstValue.java:131)
  | 20:05:44,843 ERROR [STDERR]         at 
org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276)
  | 20:05:44,843 ERROR [STDERR]         at 
org.apache.jasper.el.JspMethodExpression.invoke(JspMethodExpression.java:68)
  | 20:05:44,843 ERROR [STDERR]         at 
javax.faces.validator.MethodExpressionValidator.validate(MethodExpressionValidator.java:84)
  | 20:05:44,843 ERROR [STDERR]         at 
javax.faces.component.UIInput.validateValue(UIInput.java:1013)
  | 20:05:44,843 ERROR [STDERR]         at 
javax.faces.component.UIInput.validate(UIInput.java:867)
  | 20:05:44,843 ERROR [STDERR]         at 
javax.faces.component.UIInput.executeValidate(UIInput.java:1065)
  | 20:05:44,843 ERROR [STDERR]         at 
javax.faces.component.UIInput.processValidators(UIInput.java:666)
  | 20:05:44,843 ERROR [STDERR]         at 
org.ajax4jsf.component.AjaxViewRoot.processValidators(AjaxViewRoot.java:335)
  | 20:05:44,843 ERROR [STDERR]         at 
com.sun.faces.lifecycle.ProcessValidationsPhase.execute(ProcessValidationsPhase.java:100)
  | 20:05:44,843 ERROR [STDERR]         at 
com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
  | 20:05:44,843 ERROR [STDERR]         at 
com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:117)
  | 20:05:44,843 ERROR [STDERR]         at 
javax.faces.webapp.FacesServlet.service(FacesServlet.java:244)
  | 20:05:44,843 ERROR [STDERR]         at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
  | 20:05:44,843 ERROR [STDERR]         at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
  | 20:05:44,843 ERROR [STDERR]         at 
org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:141)
  | 20:05:44,843 ERROR [STDERR]         at 
org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:281)
  | 20:05:44,843 ERROR [STDERR]         at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
  | 20:05:44,843 ERROR [STDERR]         at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
  | 20:05:44,843 ERROR [STDERR]         at 
org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
  | 20:05:44,843 ERROR [STDERR]         at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
  | 20:05:44,843 ERROR [STDERR]         at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
  | 20:05:44,843 ERROR [STDERR]         at 
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
  | 20:05:44,843 ERROR [STDERR]         at 
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
  | 20:05:44,843 ERROR [STDERR]         at 
org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:179)
  | 20:05:44,843 ERROR [STDERR]         at 
org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
  | 20:05:44,843 ERROR [STDERR]         at 
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
  | 20:05:44,843 ERROR [STDERR]         at 
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
  | 20:05:44,843 ERROR [STDERR]         at 
org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:157)
  | 20:05:44,843 ERROR [STDERR]         at 
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
  | 20:05:44,843 ERROR [STDERR]         at 
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:262)
  | 20:05:44,843 ERROR [STDERR]         at 
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
  | 20:05:44,843 ERROR [STDERR]         at 
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
  | 20:05:44,843 ERROR [STDERR]         at 
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:446)
  | 20:05:44,843 ERROR [STDERR]         at java.lang.Thread.run(Thread.java:619)

The following code shows the part, which displays all implemented interfaces of 
the object:

  | System.out.println(obj.getClass().getName());
  | Class[] interfaces = obj.getClass().getInterfaces();
  | for (int i = 0; i < interfaces.length; ++i) {
  |    System.out.println(interfaces.getName());
  | }
Output:anonymous wrote : 20:05:44,843 INFO  [STDOUT] $Proxy94
  | 20:05:44,843 INFO  [STDOUT] test.ejb.stateless.UtilityBeanLocal
  | 20:05:44,843 INFO  [STDOUT] org.jboss.ejb3.JBossProxy

Stateless Bean:

  | @Stateless
  | public class UtilityBean implements UtilityBeanLocal, Serializable, 
Constants {
  |     private static final long serialVersionUID = 1L;
  | ......
  | 
Interface:

  | @Local
  | public interface UtilityBeanLocal {
  |     public static final String JNDI_NAME = "UtilityBeanLocal";
  |     public ApplicationSettings getApplicationSettings();
  | }

Context-Lookup:

  | public class BeanLocator {
  |     public static final String JNDI_PREFIX = "java:comp/env/ejb/";
  |     private static transient BeanLocator instance = null;
  |     private InitialContext initialcontext = null;
  |     
  |     
//--------------------------------------------------------------------------
  |     private BeanLocator() {
  |             try {
  |                     Properties props = new Properties();
  |                     
props.put(Context.INITIAL_CONTEXT_FACTORY,"org.jnp.interfaces.NamingContextFactory");
  |                     props.put(Context.PROVIDER_URL,"jnp://localhost:1099");
  |                     
props.put(Context.URL_PKG_PREFIXES,"org.jboss.naming.jnp.interfaces");
  |                     //Context ctx = new InitialContext(props);
  |                     this.initialcontext = new InitialContext(props);
  |             } catch (NamingException e) {
  |                     //e.printStackTrace();
  |                     this.initialcontext = null;
  |             }
  |     }
  |     
  |     
//--------------------------------------------------------------------------
  |     public static BeanLocator getInstance() {
  |             if (instance == null) {
  |                     instance = new BeanLocator();
  |             }
  |             return instance;
  |     }
  | 
  |         
//--------------------------------------------------------------------------
  |     public Object locate(String jndiName, Class<?> clazz) throws 
NamingException {           
  |             Object obj = null;
  |             if (this.initialcontext != null) {
  |                     //obj = 
PortableRemoteObject.narrow(initialcontext.lookup(jndiName), clazz);
  |                     obj = initialcontext.lookup(jndiName);
  |                     
  |                     System.out.println(obj.getClass().getName());
  |                     Class[] interfaces = obj.getClass().getInterfaces();
  |                     for (int i = 0; i < interfaces.length; ++i) {
  |                      System.out.println(interfaces.getName());
  |                     }
  |             }
  |             return obj;
  |     }
  | }

It is not working with or without passing the properties to the context. 

The main question is, why I cannot cast, even if the interface is implemented???

What am I missing? Does anybody has a clue?

Thanks in advance and best regards,

Thomas


View the original post : 
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4142485#4142485

Reply to the post : 
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4142485
_______________________________________________
jboss-user mailing list
jboss-user@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/jboss-user

Reply via email to