06. oktober 2003 - 16:49Der er
21 kommentarer og 1 løsning
Fejl når jeg prøver at bruge en sessionbean
Jeg få denne her sjove fejl når jeg prøver at tilgå min sessionbean fra en remoteclient(den deployer uden problemmer):
16:32:25,354 INFO [STDOUT] javax.naming.NameNotFoundException: ejb not bound 16:32:25,375 ERROR [LogInterceptor] RuntimeException: java.lang.NullPointerException at tstukey.SimplWrapBean.lavNyAftale(Unknown Source)
Sorry jeg har været så langt tid om at svare tilbage men lage mig sku lige syg. Men et svar til dit gæt, jeg lavet et JNDI navn ejb/XXXX i min jboss.xml. Jeg få sku stadig samme fejl(godt nok på en anden sessionbean). Nu ser den sådan her ud(se til sidst). Troede det var fordi jeg ikke havde en EJB references, men det har jeg nu og stadig samme fejl. Er lidt kørt fast.
2003-10-10 13:35:54,190 ERROR [org.jboss.ejb.plugins.LogInterceptor] RuntimeException: java.lang.NullPointerException at tur.session.RuteSesBean.nyRute(Unknown Source) 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:324) at org.jboss.ejb.StatelessSessionContainer$ContainerInterceptor.invoke(StatelessSessionContainer.java:683) at org.jboss.resource.connectionmanager.CachedConnectionInterceptor.invoke(CachedConnectionInterceptor.java:186) at org.jboss.ejb.plugins.StatelessSessionInstanceInterceptor.invoke(StatelessSessionInstanceInterceptor.java:72) at org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext(AbstractTxInterceptor.java:84) at org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxInterceptorCMT.java:267) at org.jboss.ejb.plugins.TxInterceptorCMT.invoke(TxInterceptorCMT.java:128) at org.jboss.ejb.plugins.SecurityInterceptor.invoke(SecurityInterceptor.java:118) at org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:191) at org.jboss.ejb.plugins.ProxyFactoryFinderInterceptor.invoke(ProxyFactoryFinderInterceptor.java:122) at org.jboss.ejb.StatelessSessionContainer.internalInvoke(StatelessSessionContainer.java:331) at org.jboss.ejb.Container.invoke(Container.java:700) 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:324) at org.jboss.mx.capability.ReflectedMBeanDispatcher.invoke(ReflectedMBeanDispatcher.java:284) at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:546) at org.jboss.invocation.jrmp.server.JRMPInvoker.invoke(JRMPInvoker.java:362) 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:324) at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:261) at sun.rmi.transport.Transport$1.run(Transport.java:148) at java.security.AccessController.doPrivileged(Native Method) at sun.rmi.transport.Transport.serviceCall(Transport.java:144) at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:460) at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:701) at java.lang.Thread.run(Thread.java:534)
Min source ser sådan her ud: public class RuteSesBean implements SessionBean { private LocalRute rute; private LocalRuteHome lrutehome; private Integer ruteid;
/* private Date idag() { return new SimpleDateFormat("dd.MM.yy").format(new Date()) ; }*/
/* Finde næste ledige ID */
private int findId() { int id = -1; Connection con; String sql = "SELECT * FROM rute ORDER BY r_id DESC LIMIT 1;"; ResultSet rs; PreparedStatement prep; try{ InitialContext ic = new InitialContext(); DataSource ds = (DataSource) ic.lookup("java:TstDB"); con = ds.getConnection();
prep = con.prepareStatement(sql); rs = prep.executeQuery(sql); rs.next(); id = rs.getInt(1);
lrutehome = (LocalRuteHome)PortableRemoteObject.narrow(obj,LocalRuteHome.class); Her det her du mener?? så er det fordi at jeg caster objectet til et LocalRuteHome jo, skal man ikke det??
Men du havde ret med det andet. Min lrutehome er null (et stort NULL) Og det fatter jeg ikke. For copy paste jeg, det her ud: try{ InitialContext ctx = new InitialContext(); Object obj = ctx.lookup("java:ejb/RuteEJB"); lrutehome = (LocalRuteHome)PortableRemoteObject.narrow(obj,LocalRuteHome.class); }catch(Exception e){}
Og sætter det ind i en anden test client der kalder min CMP direkte så virker det. Er det ikke underligt??
Har fanget den med at caste og ikke narrow. Men det er også i min ejbCreate den er gal. Den Kan ikke finde min ejb. Få den samme fejl igen. Med at ejb not bound. public void ejbCreate() //throws javax.ejb.CreateException {
System.out.println("Ny Session bean create");
try{
InitialContext ctx = new InitialContext(); System.out.println("Kommer det her ud??");
HOV Kan se i min jmx-console at ejb/RuteEJB er bound til den. Og slå jeg den op i en remote client så virker det også. Har jeg misforstået noget når man skal slå locale interfaces op??
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.