Avatar billede strange_poulsen Nybegynder
03. marts 2004 - 16:21 Der er 7 kommentarer og
1 løsning

No ClassLoaders found for:

Hej.

Jeg er ved at sætte JBOSS op og skal have en forbindelse til min MSSQL database. Jeg har lavet en databaseBean og bruger ant til at compilere min source kode.

Jeg får et problem med classloader'en som påstår at den ikke kan finde klassen. Jeg har været inde manuelt for at se på den og den er der. Kan nogen fortælle mig hvad det er jeg overser??

Jeg kører W2K med j2ee1.4 og jdk1.4.2_3. Jboss version: 3.2.3

FEJLEN:
*****************************************************************
15:53:54,291 INFO  [MainDeployer] Starting deployment of package: file:/C:/jboss
-3.2.3/server/default/deploy/ghem3.jar
15:53:54,582 WARN  [verifier] EJB spec violation:
Bean  : DatabaseHandlerEJB
Section: 22.2
Warning: The Bean Provider must specify the fully-qualified name of the Java cla
ss that implements the enterprise bean's business methods in the <ejb-class> ele
ment.
Info  : Class not found on 'com.ghem3.dbhandler.DatabaseHandlerBean': No ClassL
oaders found for: com.ghem3.dbhandler.DatabaseHandlerBean

15:53:54,582 ERROR [MainDeployer] could not create deployment: file:/C:/jboss-3.
2.3/server/default/deploy/ghem3.jar
org.jboss.deployment.DeploymentException: Verification of Enterprise Beans faile
d, see above for error messages.
        at org.jboss.ejb.EJBDeployer.create(EJBDeployer.java:491)
        at org.jboss.deployment.MainDeployer.create(MainDeployer.java:786)
        at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:641)
        at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:605)
        at sun.reflect.GeneratedMethodAccessor20.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:546)
        at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:177)
        at $Proxy6.deploy(Unknown Source)
        at org.jboss.deployment.scanner.URLDeploymentScanner.deploy(URLDeploymen
tScanner.java:302)
        at org.jboss.deployment.scanner.URLDeploymentScanner.scan(URLDeploymentS
canner.java:476)
        at org.jboss.deployment.scanner.AbstractDeploymentScanner$ScannerThread.
doScan(AbstractDeploymentScanner.java:201)
        at org.jboss.deployment.scanner.AbstractDeploymentScanner$ScannerThread.
loop(AbstractDeploymentScanner.java:212)
        at org.jboss.deployment.scanner.AbstractDeploymentScanner$ScannerThread.
run(AbstractDeploymentScanner.java:191)
*****************************************************************

MIN ejb-jar FIL:
*****************************************************************

<!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN" "http://java.sun.com/dtd/ejb-jar_2_0.dtd">

<ejb-jar>
  <enterprise-beans>
    <session>
      <ejb-name>DatabaseHandlerEJB</ejb-name>
      <home>ejb.interfaces.com.ghem3.dbhandler.DatabaseHandlerHome</home>
      <remote>ejb.interfaces.com.ghem3.dbhandler.DatabaseHandlerRemote</remote>
      <ejb-class>com.ghem3.dbhandler.DatabaseHandlerBean</ejb-class>
      <session-type>Stateless</session-type>
      <transaction-type>Container</transaction-type>

    </session>

  </enterprise-beans>

  <assembly-descriptor>

  <security-role>
      <description>
        This role represents everyone who is allowed full access to the beans.
      </description>
    <role-name>everyone</role-name>
  </security-role>

  <method-permission>
    <role-name>everyone</role-name>
      <method>
        <ejb-name>DatabaseHandlerEJB</ejb-name>
        <method-name>*</method-name>
    </method>
  </method-permission>

  <container-transaction>
    <method>
      <ejb-name>DatabaseHandlerEJB</ejb-name>
      <method-name>*</method-name>
    </method>
    <trans-attribute>Required</trans-attribute>
  </container-transaction>
</assembly-descriptor>
</ejb-jar>
*****************************************************************

MIN Jboss.xml FIL
*****************************************************************
<?xml version="1.0"?>

<jboss>
    <enterprise-beans>
      <session>
    <ejb-name>DatabaseHandlerEJB</ejb-name>
    <jndi-name>DatabaseHandlerRemote</jndi-name>
      </session>
    </enterprise-beans>
</jboss>
*****************************************************************

MIN BEAN KLASSE:
*****************************************************************

package com.ghem3.dbhandler;

import javax.ejb.SessionBean;
import javax.ejb.EJBException;
import javax.ejb.SessionContext;
import java.util.LinkedList;
import java.util.Map;
import java.util.StringTokenizer;
import java.sql.SQLException;
import java.sql.Connection;
import java.util.*;
import java.sql.*;
import java.sql.Statement;
import java.sql.ResultSet;
import java.rmi.RemoteException;


public class DatabaseHandlerBean implements SessionBean {
    private SessionContext context;
    private static DatabaseHandlerBean instance;
    private static int lockID = -1;

    public DatabaseHandlerBean ejbCreate(){}

    static {
        if (instance == null)
            instance = new DatabaseHandlerBean();
    }

    public static DatabaseHandlerBean getInstance() {
        return (instance);
    }
    /*
      * ...
      */ 
*****************************************************************

MIT HOME INTERFACE:
*****************************************************************

package com.ghem3.dbhandler;

import javax.ejb.EJBHome;
import javax.ejb.CreateException;
import java.rmi.RemoteException;

public interface DatabaseHandlerHome extends EJBHome{
    DatabaseHandlerRemote create() throws RemoteException, CreateException;
}
*****************************************************************

MIT REMOTE INTERFACE:
*****************************************************************

package com.ghem3.dbhandler;

import javax.ejb.EJBObject;
import java.sql.SQLException;
import java.util.Map;

public interface DatabaseHandlerRemote extends EJBObject {

    public DatabaseHandlerBean getInstance();

    public DataSet select(String columns, String from, String criteria, boolean lock, Object requester) throws SQLException, DBLockException;

    public int insert(String table, String columns, String values) throws SQLException;

    public int delete(String table, String criteria) throws DBLockException;
}

*****************************************************************

Nogen der kan hjælpe??
Avatar billede arne_v Ekspert
03. marts 2004 - 16:30 #1
Kan du lave en jar tvf på ghem3.jar ?
Avatar billede strange_poulsen Nybegynder
04. marts 2004 - 09:00 #2
Ved at gøre det får jeg flg.:

C:\Documents and Settings\da12034\Skrivebord\ghem3jar>jar -tvf ghem3.jar
    0 Wed Mar 03 15:53:50 CET 2004 META-INF/
    53 Wed Mar 03 15:53:50 CET 2004 META-INF/MANIFEST.MF
  1329 Wed Mar 03 15:53:14 CET 2004 META-INF/ejb-jar.xml
  223 Wed Mar 03 11:17:56 CET 2004 META-INF/jboss.xml
Avatar billede arne_v Ekspert
04. marts 2004 - 09:30 #3
Så er fejlen jo ret åbenlys.

Der er ingen class filer i din jar fil.

Du skal have class filer for din bean class og dine interfaces
i din jar fil.
Avatar billede strange_poulsen Nybegynder
04. marts 2004 - 11:09 #4
Mange tak for det. Sådan går det når man har stirret sig blind på problemer for længe og roder rundt i for mange filer samtidig. Jeg havde en fejl i min build.xml, så den ikke lagde class filerne det rigtige sted.

Men jeg kan ikke acceptere dit svar, da du har skrevet en kommentar. Hvis du mener at du ikke vil have dine point, så gør jeg ikke mere ved det.

Men mange tak for at løse mit hovedbrud.
Det er dejligt at eksperterne ikke finder et spørgsmål for dumt til at de vil svare på det.
Avatar billede labanos Nybegynder
04. marts 2004 - 11:10 #5
Var en lille fejl i build.xml, et lille fileset der var case-sensitive ;) Så problemet er løst. Sparker lige til Strange for at han husker at give dig point arne, så smid et svar :)
Avatar billede labanos Nybegynder
04. marts 2004 - 11:10 #6
oops jeg kom for sent med den!
Avatar billede arne_v Ekspert
04. marts 2004 - 11:12 #7
svar
Avatar billede arne_v Ekspert
04. marts 2004 - 11:13 #8
Jeg samler skam på point, men kan godt lide at vide om jeg er på rette spor,
inden jeg ligget et svar.
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester