# JBoss + MySQL



## grizzmock (30. Jun 2007)

Moin Moin,

folgendes Problem, versuch ein JPA - Projekt zu deployen, auf einem JBoss Server 4.2 . Allerdings hat er ein Problem mit meiner PersistenceUnit, die er nicht findet.


```
java.lang.RuntimeException: You have not defined a jta-data-source for a JTA enabled persistence context named: EJBExample
```

habe das SQL Driver jar /mysql-connector-java-5.0.6-bin.jar\ ins lib Verzeichnis kopiert, ausserdem hab ich gelesen, das ich eine mysql-ds.xml datei anpassen müsste, damit er meine Datenquelle akzeptiert, habe das ganze ohne großen Erfolg versucht (Beispiel xml Datei geändert und ins deploy Verzeichnis gepackt


```
<?xml version="1.0" encoding="UTF-8"?>


<!--  Datasource config for MySQL using 3.0.9 available from:
[url]http://www.mysql.com/downloads/api-jdbc-stable.html[/url]
-->

<datasources>
  <local-tx-datasource>
    <jndi-name>EJBExample</jndi-name>
    <connection-url>jdbc:mysql://localhost:3306/test</connection-url>
    <driver-class>com.mysql.jdbc.Driver</driver-class>
    <user-name>dd</user-name>
    <password>dd</password>
    <exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter</exception-sorter-class-name>
    <!-- sql to call when connection is created
    <new-connection-sql>some arbitrary sql</new-connection-sql>
      -->
    <!-- sql to call on an existing pooled connection when it is obtained from pool 
    <check-valid-connection-sql>some arbitrary sql</check-valid-connection-sql>
      -->

    
    <metadata>
       <type-mapping>mySQL</type-mapping>
    </metadata>
  </local-tx-datasource>
</datasources>
```

Kein Erfolg bisher. Need Help

G


----------



## bronks (30. Jun 2007)

Kurz, schmerzlos und funktionierend mit MySql 5.0.11 und Connector 5.0.3:


```
<datasources>
<local-tx-datasource>
  <jndi-name>jdbc/test</jndi-name>
  <connection-url>jdbc:mysql://localhost/test</connection-url>
  <driver-class>com.mysql.jdbc.Driver</driver-class>
  <user-name>root</user-name>
  <password>root</password>
  <metadata>
     <type-mapping>mySQL</type-mapping>
  </metadata>
</local-tx-datasource>
</datasources>
```


----------



## grizzmock (30. Jun 2007)

Der selbe Fehler:

java.lang.RuntimeException: You have not defined a jta-data-source for a JTA enabled persistence context named: EJBExample


----------



## bronks (30. Jun 2007)

Welche JBossVersion läuft bei Dir?

Hast Du auch die Namenskonventionen beim JndiName eingehalten (jdbc/... ...)

Was steht bei Dir in der persistence.xml drin?


----------



## grizzmock (30. Jun 2007)

bronks hat gesagt.:
			
		

> Welche JBossVersion läuft bei Dir?


4.2



			
				bronks hat gesagt.:
			
		

> Hast Du auch die Namenskonventionen beim JndiName eingehalten (jdbc/... ...)


jepp, steht jetzt jdbc/EJBExample drin



			
				bronks hat gesagt.:
			
		

> Was steht bei Dir in der persistence.xml drin?


peristence.xml (generriert von dem JPA Plugin


```
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
	<persistence-unit name="EJBExample">
		<mapping-file>
		META-INF/orm.xml</mapping-file>
	</persistence-unit>
</persistence>
```

und das ist dir orm.xml Datei auf die er verweist:

```
<?xml version="1.0" encoding="UTF-8"?>
<entity-mappings xmlns="http://java.sun.com/xml/ns/persistence/orm" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence/orm http://java.sun.com/xml/ns/persistence/orm_1_0.xsd" version="1.0">
</entity-mappings>
```

vielen dank schon mal für deine Hilfe, ohne Dich würde ich warscheinlich gar nicht weiter kommen :/ !!!


----------



## bronks (30. Jun 2007)

grizzmock hat gesagt.:
			
		

> ... peristence.xml (generriert von dem JPA Plugin ...


Bei Dir stehen die wichtigsten Sachen garnicht drin.

Hier mal ein Muster:

```
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
  <persistence-unit name="EJBExample-ejbPU" transaction-type="JTA">
    <provider>org.hibernate.ejb.HibernatePersistence</provider>
    <jta-data-source>java:/jdbc/test</jta-data-source>
    <properties>
      <property name="hibernate.hbm2ddl.auto" value="update"/>
    </properties>
  </persistence-unit>
</persistence>
```


----------



## grizzmock (30. Jun 2007)

Ein doofes Tool das nicht mal die XML datei bauen kann :/ hab das ganze jetzt mal im Nachhinein eingefügt, aber es geht erst mal weiter mit den lustigen Fehlermeldungen :/


```
15:07:50,203 ERROR [URLDeploymentScanner] Incomplete Deployment listing:

--- MBeans waiting for other MBeans ---
ObjectName: persistence.units:jar=EJBExample.jar,unitName=EJBExample-ejbPU
  State: NOTYETINSTALLED
  I Depend On:
    jboss.jca:name=jdbc/test,service=DataSourceBinding

--- MBEANS THAT ARE THE ROOT CAUSE OF THE PROBLEM ---
ObjectName: jboss.jca:name=jdbc/test,service=DataSourceBinding
  State: NOTYETINSTALLED
  Depends On Me:
    persistence.units:jar=EJBExample.jar,unitName=EJBExample-ejbPU
```


----------



## grizzmock (30. Jun 2007)

und als wäre das nicht schon genug, hab ich inzwischen noch mehr Probleme, kann meine Methoden nicht mal mehr aufrufen 

javax.naming.CommunicationException [Root exception is java.lang.ClassNotFoundException: test.beans.Test (no security manager: RMI class loader disabled)]


```
String urlName = "jnp://localhost:1099";
		Properties p = new Properties();
		p.put("java.naming.factory.initial",
				"org.jnp.interfaces.NamingContextFactory");
		p.put("java.naming.provider.url", urlName);
		p.put("java.naming.factory.url.pkgs",
				"org.jboss.naming:org.jnp.interfaces");
		InitialContext jndiContext = new InitialContext(p);

		Test test = (Test) jndiContext.lookup("TestBean/remote");
	}
```


----------



## bronks (1. Jul 2007)

Du mußt noch in der persistence.xml den richtigen JNDI-Namen eintragen. Das andere ist m.E. ein Folgeproblem.


----------

