Toon posts:

[EJB] Ophalen data via Session / Entity

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik probeer via een sessionbean genaamd: Storingsmelder en daarna via de entitybean genaamd UserBean, alle gebruikers uit mijn database (SQLServer 2000) op te vragen. Echter wordt ik constant geconfronteerd met 500 EJBException:; nested exception is: javax.ejb.EJBException: null, met de volgende stacktrace:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
10:13:32,968 INFO  [STDOUT] StoringsmelderBean -- ejbCreate
10:13:32,984 INFO  [STDOUT] StoringsmelderBean -- ejbCreate
10:13:32,984 INFO  [STDOUT] StoringsmelderBean getAllUsers
10:13:32,984 ERROR [LogInterceptor] EJBException:
javax.ejb.EJBException: null
        at ejb.java.storingsmelder.StoringsmelderBean.getAllUsers(Storingsmelder
Bean.java:87)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:324)
        at org.jboss.ejb.StatefulSessionContainer$ContainerInterceptor.invoke(St
atefulSessionContainer.java:824)
        at org.jboss.ejb.plugins.SecurityInterceptor.invoke(SecurityInterceptor.
java:130)
        at org.jboss.resource.connectionmanager.CachedConnectionInterceptor.invo
ke(CachedConnectionInterceptor.java:186)
        at org.jboss.ejb.plugins.StatefulSessionInstanceInterceptor.invoke(State
fulSessionInstanceInterceptor.java:268)
        at org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext(AbstractTxInte
rceptor.java:107)
        at org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxIntercep
torCMT.java:237)
        at org.jboss.ejb.plugins.TxInterceptorCMT.invoke(TxInterceptorCMT.java:9
8)
        at org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:208)
        at org.jboss.ejb.StatefulSessionContainer.invoke(StatefulSessionContaine
r.java:380)
        at org.jboss.ejb.Container.invoke(Container.java:738)
        at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:517)
        at org.jboss.invocation.local.LocalInvoker.invoke(LocalInvoker.java:99)
        at org.jboss.invocation.InvokerInterceptor.invoke(InvokerInterceptor.jav
a:102)
        at org.jboss.proxy.TransactionInterceptor.invoke(TransactionInterceptor.
java:77)
        at org.jboss.proxy.SecurityInterceptor.invoke(SecurityInterceptor.java:8
0)
        at org.jboss.proxy.ejb.StatefulSessionInterceptor.invoke(StatefulSession
Interceptor.java:117)
        at org.jboss.proxy.ClientContainer.invoke(ClientContainer.java:76)
        at $Proxy113.getAllUsers(Unknown Source)
        at org.apache.jsp.storingsmelderUsers$jsp._jspService(storingsmelderUser
s$jsp.java:138)
        at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:107)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
        at org.apache.jasper.servlet.JspServlet$JspServletWrapper.service(JspSer
vlet.java:201)
        at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:3
81)
        at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:473)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
        at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:360
)
        at org.mortbay.jetty.servlet.WebApplicationHandler.dispatch(WebApplicati
onHandler.java:294)
        at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:5
58)
        at org.mortbay.http.HttpContext.handle(HttpContext.java:1714)
        at org.mortbay.jetty.servlet.WebApplicationContext.handle(WebApplication
Context.java:507)
        at org.mortbay.http.HttpContext.handle(HttpContext.java:1664)
        at org.mortbay.http.HttpServer.service(HttpServer.java:863)
        at org.jboss.jetty.Jetty.service(Jetty.java:460)
        at org.mortbay.http.HttpConnection.service(HttpConnection.java:775)
        at org.mortbay.http.HttpConnection.handleNext(HttpConnection.java:939)
        at org.mortbay.http.HttpConnection.handle(HttpConnection.java:792)
        at org.mortbay.http.SocketListener.handleConnection(SocketListener.java:
201)
        at org.mortbay.util.ThreadedServer.handle(ThreadedServer.java:289)
        at org.mortbay.util.ThreadPool$PoolThread.run(ThreadPool.java:455)
10:13:33,000 WARN  [jbossweb] WARNING: Exception for /jspweb/storingsmelderUsers
.jsp?: java.rmi.ServerException: EJBException:; nested exception is:
        javax.ejb.EJBException: null


Ik heb zelf geen flauw idee meer wat er fout gaat, maar ik denk in ieder geval te zien dat hij wel kan communiceren met de sessionbean, maar snap niet wat daar fout gaat. Hieronder code van mijn entitybean en sessionbean.

Code van entitybean UserHomedie Eclipse/Lomboz zelf heeft gegenereerd:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
/*
 * Generated by XDoclet - Do not edit!
 */
package ejb.java.smsbeans;

/**
 * Home interface for User.
 * @lomboz generated
 */
public interface UserHome
   extends javax.ejb.EJBHome
{
   public static final String COMP_NAME="java:comp/env/ejb/User";
   public static final String JNDI_NAME="UserBean";

   public ejb.java.smsbeans.User create(java.lang.Integer userId , java.lang.String userName , 
java.lang.String password , java.lang.String mobileNumber)
      throws javax.ejb.CreateException,java.rmi.RemoteException;

   public java.util.Collection findAll()
      throws javax.ejb.FinderException,java.rmi.RemoteException;

   public ejb.java.smsbeans.User findByPrimaryKey(java.lang.Integer pk)
      throws javax.ejb.FinderException,java.rmi.RemoteException;


Code van sessionbean Storingsmelder met aanroep van .findall:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
/**
    * @ejb.interface-method
    *   tview-type="remote" 
    **/
    public ArrayList getAllUsers()
    {
        System.out.println("StoringsmelderBean getAllUsers");
        Collection users = null;

        try
        {
            users = userHome.findAll();
        }
        catch (Exception ex)
        {
            throw new EJBException(ex.getMessage());
        }
        return copyUsersToDetails(users);
    } // getAllUsers


Code van mijn JSP om alle gebruikers weer te geven:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<%@page import="ejb.java.storingsmelder.*" %>
<%@page import="java.util.*" %>
<%@page import="javax.ejb.*"%>
<%@page import="javax.naming.*"%>   

<%
    StoringsmelderHome storingsmelderHome = null;
    Hashtable env = new Hashtable(); 
    env.put(Context.INITIAL_CONTEXT_FACTORY,"org.jnp.interfaces.NamingContextFactory"); 
    env.put(Context.PROVIDER_URL,"rmi://localhost/melder"); 
    InitialContext ctx = new InitialContext();
    Object objref = ctx.lookup(StoringsmelderHome.JNDI_NAME);
    storingsmelderHome =(StoringsmelderHome)javax.rmi.PortableRemoteObject.narrow
(objref, StoringsmelderHome.class);
    String zooi;

    Storingsmelder storingsmelder =null;
    try
    {
        storingsmelder = storingsmelderHome.create();
    }
    catch (javax.ejb.NoSuchEntityException e)
    {
        e.printStackTrace();
    }
out.println("<center><BR><TABLE BORDER=1 BGCOLOR=#FFFFFF>");
    out.println("<TR><TD COLSPAN=4>Sms gebruikers: </TD></TR>");
    out.println("<TR><TD><B>Gebruiker ID</B></TD>");
    out.println("<TD>Gebruikersnaam</TD>");
    out.println("<TD>Wachtwoord</TD>");
    out.println("<TD>Mobiele nummer</TD></TR>");

    ArrayList userList = null;
    storingsmelder = storingsmelderHome.create();
    userList = storingsmelder.getAllUsers();
        
    Iterator i = userList.iterator();
    while (i.hasNext()) 
    {
        out.println("<TR>");
        String details = (String)i.next();
        StringTokenizer st = new StringTokenizer(details,",");
        while( st.hasMoreTokens() )
        {
            out.println("<TD>"+(String)st.nextToken() + "</TD>");
        }
        out.println("</TR>");
    }
    out.println("</TABLE><center>");
%>


Heeft iemand enig idee waarom ik constant onderstaande fout krijg?????? :?

HTTP ERROR: 500 EJBException:; nested exception is: javax.ejb.EJBException: null RequestURI=/jspweb/storingsmelderUsers.jsp

  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Dit is de kern van de zaak:
javax.ejb.EJBException: null
at ejb.java.storingsmelder.StoringsmelderBean.getAllUsers(Storingsmelder
Bean.java:87)
Waarschijnlijk is dit regel 87?
code:
1
users = userHome.findAll();

Waarschijnlijk is userHome null.

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


Verwijderd

Topicstarter
Nee dat is niet regel 87, zie hieronder:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public ArrayList getAllUsers()
    {
        System.out.println("StoringsmelderBean getAllUsers");
        Collection users = null;

        try
        {
            users = userHome.findAll();
        }
        catch (Exception ex)
        {
regel 87 -->throw new EJBException(ex.getMessage());
        }
        return copyUsersToDetails(users);
    } // getAllUsers


Daarom snap ik hem ook niet.... maar als het nou wel aan: "users=userHome.findAll();" ligt, dan snap ik niet waar ik dan eventueel wat zou moeten/kunnen veranderen zodat deze het wel doet...

[ Voor 26% gewijzigd door Verwijderd op 12-05-2003 10:32 ]


  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Ja tuurlijk, daar wordt de exception gegooid dus dat is regel 87.

Sowieso is het een stuk beter om de geneste foutmelding mee te geven. Dit zou je direct geholpen hebben aan de echte locatie.

code:
1
throw new EJBException(ex);

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


Verwijderd

Topicstarter
Ok dat snap ik nu (beetje dom van mezelf maar vooruit)... heb overigens meteen de EJBException aangepast naar jouw voorstel.
Maar kan je ook uit mijn beginpost (code) halen waarom het dan "null" is, want mijn UserHome wordt automatisch door Xdoclet gegenereerd... hoe kan ik ervoor zorgen dat alle gegevens uit mijn database gehaald worden?? Ik heb namelijk 2 gebruikers in mijn database opgeslagen...

Verwijderd

Hoe doe je in je StoringsmelderBean een lookup van je Userhome. Ook al wordt de UserHome door XDoclet gegeneerd dan moet je nog wel altijd een lookup doen.

Bijv. zoiets..
code:
1
2
      Context ctx = new InitialContext();
      userHome =  (UserLocalHome) ctx.lookup(USERLOCALHOMEJNDI);

  • EfBe
  • Registratie: Januari 2000
  • Niet online
offtopic:
Het is wel een inmense call-chain die die call afloopt. Lijkt me niet echt bevorderlijk voor de performance

Creator of: LLBLGen Pro | Camera mods for games
Photography portfolio: https://fransbouma.com


Verwijderd

Topicstarter
Het offtopic verhaal begrijp ik niet... sorry.. zal eens opzoeken wat dit allemaal inhoudt.
Sosume... ik heb een lookup die naar mijn idee wel werkt:

code:
1
2
3
4
5
6
7
8
9
10
11
/**
    * @ejb.interface-method
    *   tview-type="local" 
    **/
    private UserLocalHome lookupUser() throws NamingException
    {
        Context initial = new InitialContext();
        Object objref = initial.lookup(UserHome.JNDI_NAME);
        local =(UserLocalHome)javax.rmi.PortableRemoteObject.narrow(objref, UserLocalHome.class);
        return (UserLocalHome) objref;
    }


Alleen loopt hij nou te zeuren over een method copyUsersToDetails die volgens hem niet in de bean class staat, maar die direct onder de lookupUser staat...

Verwijderd

Topicstarter
snap er niets van... eerst gaf hij een error op de lookupUser() met een NoSuchMethodFound en nu op de method eronder (copyUsersToDetails()). Kan iemand aan mijn stacktrace zien wat er nou precies aan de hand is? :?

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
14:06:25,484 INFO  [EjbModule] Creating
14:06:25,515 INFO  [EjbModule] Deploying Storingsmelder
14:06:25,546 WARN  [ServiceController] Problem creating service jboss.j2ee:jndiN
ame=StoringsmelderBean,service=EJB
java.lang.NoSuchMethodException: Method not found in bean class: copyUsersToDeta
ils(Collection)
        at org.jboss.ejb.StatefulSessionContainer.setUpBeanMappingImpl(StatefulS
essionContainer.java:620)
        at org.jboss.ejb.StatefulSessionContainer.setupBeanMapping(StatefulSessi
onContainer.java:646)
        at org.jboss.ejb.StatefulSessionContainer.create(StatefulSessionContaine
r.java:200)
        at org.jboss.ejb.Container.invoke(Container.java:778)
        at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:517)
        at org.jboss.system.ServiceController$ServiceProxy.invoke(ServiceControl
ler.java:1003)
        at $Proxy4.create(Unknown Source)
        at org.jboss.system.ServiceController.create(ServiceController.java:328)

        at sun.reflect.GeneratedMethodAccessor29.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:324)
        at org.jboss.mx.capability.ReflectedMBeanDispatcher.invoke(ReflectedMBea
nDispatcher.java:284)
        at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:517)
        at org.jboss.util.jmx.MBeanProxy.invoke(MBeanProxy.java:174)
        at $Proxy38.create(Unknown Source)
        at org.jboss.ejb.EjbModule.createService(EjbModule.java:360)
        at org.jboss.system.ServiceMBeanSupport.create(ServiceMBeanSupport.java:
136)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:324)
        at org.jboss.mx.capability.ReflectedMBeanDispatcher.invoke(ReflectedMBea
nDispatcher.java:284)
        at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:517)
        at org.jboss.system.ServiceController$ServiceProxy.invoke(ServiceControl
ler.java:1003)
        at $Proxy4.create(Unknown Source)
        at org.jboss.system.ServiceController.create(ServiceController.java:328)

        at org.jboss.system.ServiceController.create(ServiceController.java:253)

        at sun.reflect.GeneratedMethodAccessor2.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:324)
        at org.jboss.mx.capability.ReflectedMBeanDispatcher.invoke(ReflectedMBea
nDispatcher.java:284)
        at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:517)
        at org.jboss.util.jmx.MBeanProxy.invoke(MBeanProxy.java:174)
        at $Proxy11.create(Unknown Source)
        at org.jboss.ejb.EJBDeployer.create(EJBDeployer.java:377)
        at org.jboss.deployment.MainDeployer.create(MainDeployer.java:766)
        at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:626)
        at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:591)
        at sun.reflect.GeneratedMethodAccessor11.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:324)
        at org.jboss.mx.capability.ReflectedMBeanDispatcher.invoke(ReflectedMBea
nDispatcher.java:284)
        at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:517)
        at org.jboss.util.jmx.MBeanProxy.invoke(MBeanProxy.java:174)
        at $Proxy3.deploy(Unknown Source)
        at org.jboss.deployment.scanner.URLDeploymentScanner.deploy(URLDeploymen
tScanner.java:435)
        at org.jboss.deployment.scanner.URLDeploymentScanner.scanDirectory(URLDe
ploymentScanner.java:656)
        at org.jboss.deployment.scanner.URLDeploymentScanner.scan(URLDeploymentS
canner.java:507)
        at org.jboss.deployment.scanner.AbstractDeploymentScanner$ScannerThread.
doScan(AbstractDeploymentScanner.java:217)
        at org.jboss.deployment.scanner.AbstractDeploymentScanner$ScannerThread.
loop(AbstractDeploymentScanner.java:230)
        at org.jboss.deployment.scanner.AbstractDeploymentScanner$ScannerThread.
run(AbstractDeploymentScanner.java:207)
14:06:26,046 INFO  [EjbModule] Created
14:06:26,046 INFO  [EjbModule] Starting
14:06:26,062 INFO  [EjbModule] Started
14:06:26,062 INFO  [MainDeployer] Deployed package: file:/D:/Program Files/jboss
-3.0.7/server/default/deploy/storingsmelder.jar
14:06:26,093 ERROR [URLDeploymentScanner] MBeanException: Exception in MBean ope
ration 'checkIncompleteDeployments()'
Cause: Incomplete Deployment listing:
Packages waiting for a deployer:
  <none>
Pagina: 1