У меня есть сервлет, который я хотел бы запустить в ColdFusion MX 7. Я хотел бы использовать существующий ColdFusion DSN как javax.sql.DataSource, если это возможно.
Я думал что-то вроде
coldfusion.server.ServiceFactory.getDataSourceService().getDatasource(dsname);
будет работать, но, к сожалению, сервлет возвращает
java.lang.NoClassDefFoundError: coldfusion/server/ServiceFactory




Этот код будет работать нормально, у вас просто нет ServiceFactory в вашем пути к классам. Т.е. Java не может загрузить этот класс. Попробуйте включить зависимость от cfusion.jar из C: \ CFusionMX7 \ lib.
Хм, я сделал это только для java-класса, который вызывается из ColdFusion с помощью CFOBJECT. Это то, что ты делаешь? Возможно, вам потребуется находиться в этом контексте, чтобы добраться до источников данных.
Так оно и выглядит. У меня есть сервлет, которому нужен доступ к базе данных. Я посмотрю, работает ли создание нового источника данных JNDI в jrun-resources.xml.
Кажется, самый простой способ сделать это - добавить дополнительный источник данных JNDI в jrun-resources.xml. Затем к нему можно получить доступ обычным способом:
Context context = new InitialContext();
DataSource ds = (DataSource)context.lookup("mydatasource");
Это действительно означает дублирование конфигурации подключения к базе данных, но я бы предпочел это сделать, чем работать с в значительной степени недокументированными классами coldfusion.server. *.
Теперь получаем: coldfusion.server.ServiceFactory $ ServiceNotAvailableExceptio n: служба DataSource недоступна. neo-query.xml в порядке, запросы со страниц .cfm по-прежнему работают.