2008-11-06 7 views
1

J'ai une servlet que j'aimerais utiliser dans ColdFusion MX 7. Je souhaite utiliser un DSN ColdFusion existant en tant que javax.sql.DataSource, si possible.Accès à une source de données ColdFusion à partir du code Java

Je pensais que quelque chose comme

coldfusion.server.ServiceFactory.getDataSourceService().getDatasource(dsname); 

fonctionnerait, mais malheureusement le servlet retourne

java.lang.NoClassDefFoundError: coldfusion/server/ServiceFactory 

Répondre

0

Il semble que la façon la plus simple d'y parvenir est d'ajouter une source de données JNDI supplémentaire dans jrun-resources.xml. Cela peut ensuite être accessible de façon classique:

Context context = new InitialContext(); 
DataSource ds = (DataSource)context.lookup("mydatasource"); 

Cela ne signifie dupliquer la configuration de connexion de base de données, mais je préfère le faire que le travail avec le coldfusion.server en grande partie sans papier * classes..

1

Ce code fonctionne bien, vous venez de n'ont pas ServiceFactory dans votre classpath. Autrement dit, Java ne peut pas charger cette classe. Essayez d'inclure une dépendance sur cfusion.jar à partir de C: \ CFusionMX7 \ lib.

+0

Obtention de: coldfusion.server.ServiceFactory $ ServiceNotAvailableException: Le service DataSource n'est pas disponible. neo-query.xml est correct, les requêtes provenant des pages .cfm fonctionnent toujours. – AlexJReid

+0

Hmm, j'ai seulement fait ceci est une classe Java appelée depuis ColdFusion avec CFOBJECT. Est-ce ce que vous faites? Vous devrez peut-être être dans ce contexte pour accéder aux sources de données. –

+0

C'est comme ça. J'ai une servlet qui a besoin d'accéder à une base de données. Je vais voir si la création d'une nouvelle source de données JNDI dans jrun-resources.xml fonctionne, devrait faire. – AlexJReid

Questions connexes