|
| J2EE og MySQL Fra : Daniel Jacobsen |
Dato : 01-12-02 23:23 |
|
Hejsa
Er der nogen der ved, hvordan der skabes forbindelse fra en J2EE applikation
til en MySQL database?
Og nej, det er ikke som i en almindelig J2SE applikation !!!!!
Jeg tror det er noget med en descriptor-fil, men hvad skal der skrives?
Eller hvordan gøres det?
Mvh. Daniel J.
| |
Thorbjoern Ravn Ande~ (02-12-2002)
| Kommentar Fra : Thorbjoern Ravn Ande~ |
Dato : 02-12-02 10:47 |
|
"Daniel Jacobsen" <dj@g-a-f.dk> writes:
> Er der nogen der ved, hvordan der skabes forbindelse fra en J2EE applikation
> til en MySQL database?
>
> Og nej, det er ikke som i en almindelig J2SE applikation !!!!!
>
> Jeg tror det er noget med en descriptor-fil, men hvad skal der skrives?
Det er applikationsserverspecifikt.
Hvis det er lidt akut brandslukning kan du naturligvis goere det paa
saedvanlig non-J2EE vis, med at registrere JDBC driveren og aabne din
forbindlse direkte i koden, men saa faar du ikke fordelene ved
J2EE-serveren.
--
Thorbjørn Ravn Andersen
http://unixsnedkeren.dk/ravn
| |
Daniel Jacobsen (02-12-2002)
| Kommentar Fra : Daniel Jacobsen |
Dato : 02-12-02 14:43 |
|
> Hvis det er lidt akut brandslukning kan du naturligvis goere det paa
> saedvanlig non-J2EE vis, med at registrere JDBC driveren og aabne din
> forbindlse direkte i koden, men saa faar du ikke fordelene ved
> J2EE-serveren.
> --
> Thorbjørn Ravn Andersen
> http://unixsnedkeren.dk/ravn
Det foregår i et JBoss-miljø, med implementeret Tomcat og jeg vil helst gøre
det rigtigt.
| |
Søren Berg Glasius (02-12-2002)
| Kommentar Fra : Søren Berg Glasius |
Dato : 02-12-02 14:37 |
|
> Er der nogen der ved, hvordan der skabes forbindelse fra en J2EE
applikation
> til en MySQL database?
>
> Og nej, det er ikke som i en almindelig J2SE applikation !!!!!
>
> Jeg tror det er noget med en descriptor-fil, men hvad skal der skrives?
> Eller hvordan gøres det?
>
Hej
I din ejb-jar.xml skal du beskrive din datasource - dette er generisk for
alle AppServere og ser nogenlunde sådan ud:
<resource-ref>
<res-ref-name>jdbc/myDataSource</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
I din AppServer skal du beskrive specifikt, hvordan den skal levere
ovenstående datasource. I Tomcat 4 kunne det se sådan ud:
<Resource name="jdbc/myDataSource"
auth="Container"
type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/myDataSource">
<parameter>
<name>factory</name>
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
</parameter>
<parameter>
<name>maxActive</name>
<value>100</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>30000</value>
</parameter>
<parameter>
<name>maxWait</name>
<value>100</value>
</parameter>
<parameter>
<name>username</name>
<value>myuser</value>
</parameter>
<parameter>
<name>password</name>
<value>mypassword</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>com.mysql.jdbc.Driver</value>
</parameter>
<parameter>
<name>url</name>
<value>jdbc:mysql://localhost/mydb</value>
</parameter>
<parameter>
<name>autoReconnect</name>
<value>true</value>
</parameter>
</ResourceParams>
og for at få en datasource bruger du f.eks:
javax.naming.Context ctx = new javax.naming.InitialContext();
if(ctx == null ) {
throw new javax.naming.NamingException("Boom - No Context");
}
return
(javax.sql.DataSource)ctx.lookup("java:comp/env/jdbc/myDataSource");
Håber det har kastet lidt lys over dit problem?
MVH
Søren Berg Glasius
| |
Daniel Jacobsen (02-12-2002)
| Kommentar Fra : Daniel Jacobsen |
Dato : 02-12-02 18:30 |
|
Nåh nu virker det. Følgende descriptor deployes:
<?xml version="1.0" encoding="UTF-8"?>
<server>
<mbean code="org.jboss.resource.connectionmanager.LocalTxConnectionManager"
name="jboss.jca:service=LocalTxCM,name=hsqldbDS">
<depends optional-attribute-name="ManagedConnectionFactoryName">
<!--embedded mbean-->
<mbean code="org.jboss.resource.connectionmanager.RARDeployment"
name="jboss.jca:service=LocalTxDS,name=MySQL">
<attribute name="JndiName">AdresserDB</attribute>
<attribute name="ManagedConnectionFactoryProperties">
<properties>
<config-property name="ConnectionURL"
type="java.lang.String">jdbc:mysql://localhost/adresser</config-property>
<config-property name="DriverClass"
type="java.lang.String">org.gjt.mm.mysql.Driver</config-property>
<!--set these only if you want only default logins, not through JAAS -->
<config-property name="UserName"
type="java.lang.String">username</config-property>
<config-property name="Password"
type="java.lang.String">password</config-property>
</properties>
</attribute>
<!--Below here are advanced properties -->
<!--hack-->
<depends
optional-attribute-name="OldRarDeployment">jboss.jca:service=RARDeployment,n
ame=JBoss LocalTransaction JDBC Wrapper</depends>
<!--
<depends>jboss:service=Hypersonic</depends>
-->
</mbean>
</depends>
<depends optional-attribute-name="ManagedConnectionPool">
<!--embedded mbean-->
<mbean
code="org.jboss.resource.connectionmanager.JBossManagedConnectionPool"
name="jboss.jca:service=LocalTxPool,name=MySQL">
<attribute name="MinSize">0</attribute>
<attribute name="MaxSize">50</attribute>
<attribute name="BlockingTimeoutMillis">5000</attribute>
<attribute name="IdleTimeoutMinutes">15</attribute>
<attribute name="Criteria">ByContainer</attribute>
</mbean>
</depends>
<depends
optional-attribute-name="CachedConnectionManager">jboss.jca:service=CachedCo
nnectionManager</depends>
<depends
optional-attribute-name="JaasSecurityManagerService">jboss.security:service=
JaasSecurityManager</depends>
<attribute name="TransactionManager">java:/TransactionManager</attribute>
<!--make the rar deploy! hack till better deployment-->
<depends>jboss.jca:service=RARDeployer</depends>
</mbean>
</server>
Og så refereres der til databasen med: DataSource ds =
(DataSource)ic.lookup("java:/AdresserDB");
| |
|
|