ClassCCastException: $Proxy. O_o !

Status
Nicht offen für weitere Antworten.

Exzensior

Mitglied
Ich bin etwas ratols. Ich will über Servlet und Session Bean / EntityBean einen Datenbankzugriff realisieren. Nun habe ich eine EJB für je eine Tabelle (Person und Konto) in der DB. Starte ich die Anwendung so kann ich z.B. eine Konto anlegen(geht alles) ...will ich eine weitere anlegen (sprich im Browser zurück und das Formular zum anlegen nochmnal ausgefüllt) kommt die Exception (sieh unten) gleiches gilt für Person (ensprechende Exception). Soll heissen ich kann für jede EJB jeweils eine Aktion durchführen....danach (bei einem zweiten Versuch) kommt immer die Exception. Ich werd daraus nicht schlau. Eine erneute Asuführung wird erst durch eine neues deployen möglich..aba danach gehts auch wieder je nur einmal :-//





Code:
2005-05-23 11:41:37,337 ERROR [org.jboss.ejb.plugins.LogInterceptor] RuntimeException in method: public abstract void DB_2.ejb.Service.interfaces.KontoService.createKonto(java.lang.Integer,java.lang.String,java.lang.In teger) throws java.rmi.RemoteException:
java.lang.ClassCastException: $Proxy54
at DB_2.ejb.Service.ServiceLocator.lookup(ServiceLocator.java:46)
at DB_2.ejb.Service.KontoServiceBean.createKonto(KontoServiceBean.java:96)
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 org.jboss.invocation.Invocation.performCall(Invocation.java:345)
at org.jboss.ejb.StatelessSessionContainer$ContainerInterceptor.invoke(StatelessSessionContainer.java:2 14)
at org.jboss.resource.connectionmanager.CachedConnectionInterceptor.invoke(CachedConnectionInterceptor. java:185)
at org.jboss.ejb.plugins.StatelessSessionInstanceInterceptor.invoke(StatelessSessionInstanceInterceptor .java:113)
at org.jboss.webservice.server.ServiceEndpointInterceptor.invoke(ServiceEndpointInterceptor.java:51)
at org.jboss.ejb.plugins.CallValidationInterceptor.invoke(CallValidationInterceptor.java:48)
at org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext(AbstractTxInterceptor.java:105)
at org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxInterceptorCMT.java:313)
at org.jboss.ejb.plugins.TxInterceptorCMT.invoke(TxInterceptorCMT.java:146)
at org.jboss.ejb.plugins.SecurityInterceptor.invoke(SecurityInterceptor.java:122)
at org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:192)
at org.jboss.ejb.plugins.ProxyFactoryFinderInterceptor.invoke(ProxyFactoryFinderInterceptor.java:122)
at org.jboss.ejb.SessionContainer.internalInvoke(SessionContainer.java:624)
at org.jboss.ejb.Container.invoke(Container.java:870)
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 org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:144)
at org.jboss.mx.server.Invocation.dispatch(Invocation.java:80)
at org.jboss.mx.server.Invocation.invoke(Invocation.java:72)
at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:249)
at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:642)
at org.jboss.invocation.local.LocalInvoker$MBeanServerAction.invoke(LocalInvoker.java:155)
at org.jboss.invocation.local.LocalInvoker.invoke(LocalInvoker.java:104)
at org.jboss.invocation.InvokerInterceptor.invokeLocal(InvokerInterceptor.java:115)
at org.jboss.invocation.InvokerInterceptor.invoke(InvokerInterceptor.java:101)
at org.jboss.proxy.TransactionInterceptor.invoke(TransactionInterceptor.java:46)
at org.jboss.proxy.SecurityInterceptor.invoke(SecurityInterceptor.java:55)
at org.jboss.proxy.ejb.StatelessSessionInterceptor.invoke(StatelessSessionInterceptor.java:97)
at org.jboss.proxy.ClientContainer.invoke(ClientContainer.java:91)
at $Proxy63.createKonto(Unknown Source)
at DB_2.ejb.Client.AdminServlet.doGet(AdminServlet.java:165)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:697)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:75)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:186)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.jboss.web.tomcat.security.CustomPrincipalValve.invoke(CustomPrincipalValve.java:66)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:150)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:54)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.jav a:705)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683)
at java.lang.Thread.run(Thread.java:595)
 

Bleiglanz

Gesperrter Benutzer
wie vergibst du denn den Primärschlüssel?

machst du ganz normal create auf dem home der Entity EJB?

zeig mal den Code der SessionBean

Service Locator kapuuttt
 

Bleiglanz

Gesperrter Benutzer
Code:
    public Object lookup(String jndiName, Class homeClazz) {

        if (cashedHomes.containsKey(jndiName)) {
            return (EJBHome) cashedHomes.get(jndiName);
        }

        Object home = null;
        try {
            home = ctx.lookup(jndiName);
            home = PortableRemoteObject.narrow(home, homeClazz);
            cashedHomes.put(jndiName, home);
        } catch (NamingException e) {
            e.printStackTrace();
        }
        return home;
    }

Code:
        DB_2.ejb.Server.interfaces.KontoLocalHome kontoHome = (DB_2.ejb.Server.interfaces.KontoLocalHome) ServiceLocator
                .getServiceLocator().lookup(DB_2.ejb.Server.interfaces.KontoLocalHome.JNDI_NAME,
                        DB_2.ejb.Server.interfaces.KontoLocalHome.class);
pfff, so geht das nicht?! wer hat denn den Lookup zeugs geschrieben (das gibt kein Ding vom Typ EJBHome)

ausserdem is das doch XDoclettig

=> sind da nicht irgendwo einfache Util-Klassen dabei, die die homes chachen?
 

Exzensior

Mitglied
Um ehrlich zu sein hab ich mir den Code hier und da zusammen gesucht und mir was draus gebastelt.

Das Problem mit den Exceptions habe ich nun doch in den Griff bekommen indem ich das Caching im ServiceLocator abgestellt habe.

Trotzdem nochmal danke!!
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben