Newsgroup: it.comp.java
Titolo: Problema JBoss JNDI

Salve  a tutti
vi espongo il mio problema con JBoss 3
Vorrei ottenere un pool di connessioni da Mysql.
Questo è il mio mysql-service.xml.
<?xml version="1.0" encoding="UTF-8"?>
  <mbean
code="org.jboss.resource.connectionmanager.LocalTxConnectionManager"
name="jboss.jca:service=LocalTxCM,name=MySqlDS">
    <depends optional-attribute-name="ManagedConnectionFactoryName">
      <mbean code="org.jboss.resource.connectionmanager.RARDeployment"
name="jboss.jca:service=LocalTxDS,name=MySql">
        <attribute name="JndiName">MySql</attribute>
        <attribute name="ManagedConnectionFactoryProperties">
          <properties>
            <config-property name="ConnectionURL"
type="java.lang.String">jdbc:mysql://localhost/tesi</config-property>
            <config-property name="DriverClass"
type="java.lang.String">org.gjt.mm.mysql.Driver</config-property>
            <config-property name="UserName"
type="java.lang.String">root</config-property>
            <config-property name="Password"
type="java.lang.String"></config-property>
          </properties>
        </attribute>
        <depends
optional-attribute-name="OldRarDeployment">jboss.jca:service=RARDeployment,n
ame=JBoss LocalTransaction JDBC Wrapper</depends>
      </mbean>
    </depends>
    <depends optional-attribute-name="ManagedConnectionPool">
      <!--embedded mbean-->
      <mbean
code="org.jboss.resource.connectionmanager.JBossManagedConnectionPool"
name="jboss.jca:service=LocalTxPool,name=MySqlDS">
        <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:name=Jaa
sSecurityManager</depends>
    <attribute
name="TransactionManager">java:/TransactionManager</attribute>
    <depends>jboss.jca:service=RARDeployer</depends>
  </mbean>
</server>
Lo inserisco in default/deploy ed effettivamente viene deployato
correttamente.
A questo punto non riesco a richiamarlo nè da servlet nè da applicazione.
import java.rmi.*;
import javax.naming.*;
import javax.sql.*;
import java.util.*;
import java.sql.*;
public class Client {
public static void main(String args[])  {
try
{
Connection con=null;
InitialContext jndiContext = new InitialContext();
DataSource ds= (DataSource) jndiContext.lookup("java:/Mysql");
con=ds.getConnection();
System.out.println("tutto ok");
}
catch (NamingException e)
{
 System.out.println(e.toString());
}
catch (SQLException sql)
 {
System.out.println(sql.toString());
}
}
}
Mi dice sempre : No Object bound
Se invece inserisco
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY,
"org.jnp.interfaces.NamingContextFactory");
env.put(Context.PROVIDER_URL, "localhost");
env.put(Context.URL_PKG_PREFIXES, "org.jboss.naming:org.jnp.interfaces" );
InitialContext jndiContext = new InitialContext(env);
mi dice Mysql not bound.
Eppure da console jboss io il servizio lo vedo.
Secondo voi cosa posso fare? Dove sbaglio? Ho messo il CLASSPATH
praticamente dappertutto
ma non funziona.
grazie
legolas

 InitialContext jndiContext = new InitialContext(env);
non serve, poiché se ti connetti da un client nella stessa VM, basta solo
new InitialContext() senza parametri, mentre in remoto, non puoi comunque
utilizzare il DataSource. A meno che le cose non siano cambiate nel
frattempo.
--
~Luigi


gira tutto sotto la stessa vm. Non mi ero accorto della S maiuscolo e ho
perso parecchie
ore per questo stupido problema.
Ora pero' mi da questo errore:
javax.naming.NoInitialContextException: Need to specify class name in
environment or system property, or as an applet parameter, or in an
application resource file: java.naming.factory.initial
secondo te come posso risolvere?
C'entra qualcosa con PortableRemoteObject.narrow..etc..? Ma come
specificarlo per un Datasource?
grazie

 secondo te come posso risolvere?
Te lo sta dicendo: devi definire la proprieta' 
"java.naming.factory.initial" in modo oppurtuno (per JBoss3 e' 
org.jnp.interfaces.NamingContextFactory).
Cerca il file jndi.properties nella distribuzione di JBoss.
-- 
Life's something u don't get out alive..
ObjectZone - 
http://space.tin.it/computer/csadun