Доступ к источнику данных ColdFusion из кода Java

У меня есть сервлет, который я хотел бы запустить в ColdFusion MX 7. Я хотел бы использовать существующий DSN ColdFusion в качестве javax.sql.DataSource, если это возможно.

я думал что-то вроде

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

будет работать, но, к сожалению, сервлет возвращает

java.lang.NoClassDefFoundError: coldfusion/server/ServiceFactory

person AlexJReid    schedule 06.11.2008    source источник


Ответы (2)


Этот код будет работать нормально, просто у вас нет ServiceFactory в вашем пути к классам. Т.е. Java не может загрузить этот класс. Попробуйте включить зависимость от cfusion.jar из C:\CFusionMX7\lib.

person Chase Seibert    schedule 06.11.2008
comment
Теперь получаю: coldfusion.server.ServiceFactory$ServiceNotAvailableException: служба DataSource недоступна. neo-query.xml в порядке, запросы со страниц .cfm все еще работают. - person AlexJReid; 06.11.2008
comment
Хм, я сделал только это, это класс Java, вызываемый из ColdFusion с CFOBJECT. Это то, что ты делаешь? Возможно, вам придется находиться в этом контексте, чтобы добраться до источников данных. - person Chase Seibert; 06.11.2008
comment
Это выглядит так. У меня есть сервлет, которому нужен доступ к базе данных. Я посмотрю, работает ли создание нового источника данных JNDI в jrun-resources.xml. - person AlexJReid; 07.11.2008

Кажется, самый простой способ сделать это — добавить дополнительный источник данных JNDI в файл jrun-resources.xml. Затем к нему можно получить доступ обычным способом:

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

Это означает дублирование конфигурации подключения к базе данных, но я бы предпочел сделать это, чем работать с в значительной степени недокументированными классами coldfusion.server.*.

person AlexJReid    schedule 07.11.2008