AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Функционал
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 11.07.2007, 18:03   #1  
Nitro is offline
Nitro
Участник
 
4 / 10 (1) +
Регистрация: 11.07.2007
-> Как подключиться к Axapta из Java (через JDBC)?
Подскажите пожалуйста, как подключиться к Axapta из Java ?

Заранее спасибо.
Старый 11.07.2007, 18:18   #2  
konopello is offline
konopello
SAP
SAP
 
628 / 76 (4) ++++
Регистрация: 08.11.2005
Адрес: Минск
Вопрос не информативен, но может быть вы это имели ввиду
X++:
String url   = "jdbc:odbc:MySqlODBC";
		String query = "SELECT EmployeeID, LastName, FirstName FROM Employees"; 

		try {
			Class.forName ("sun.jdbc.odbc.JdbcOdbcDriver");
			Connection con = DriverManager.getConnection(url, "Asch", "");
			Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
			 									 ResultSet.CONCUR_READ_ONLY);

			ResultSet rs = stmt.executeQuery(query);
Старый 16.07.2007, 13:10   #3  
Nitro is offline
Nitro
Участник
 
4 / 10 (1) +
Регистрация: 11.07.2007
Здравствуйте. Спасибо за ответ.
Да, я про это как раз и говорил.
Только у меня не получается сконнектиться. =(
Делаю так:
X++:
            Class.forName ("sun.jdbc.odbc.JdbcOdbcDriver");
            Connection conn = DriverManager.getConnection("jdbc:odbc:" + AxaptaConfiguration, AxaptaUserID, AxaptaPassword);
... и вылетает следующее (стек):
X++:
WARNING: File: JdbcOdbc.java Class: sun.jdbc.odbc.JdbcOdbc Method: createSQLException Line: 6957

WARNING: File: JdbcOdbc.java Class: sun.jdbc.odbc.JdbcOdbc Method: standardError Line: 7114

WARNING: File: JdbcOdbc.java Class: sun.jdbc.odbc.JdbcOdbc Method: SQLDriverConnect Line: 3073

WARNING: File: JdbcOdbcConnection.java Class: sun.jdbc.odbc.JdbcOdbcConnection Method: initialize Line: 323

WARNING: File: JdbcOdbcDriver.java Class: sun.jdbc.odbc.JdbcOdbcDriver Method: connect Line: 174

WARNING: File: DriverManager.java Class: java.sql.DriverManager Method: getConnection Line: 582

WARNING: File: DriverManager.java Class: java.sql.DriverManager Method: getConnection Line: 185
Надо ли ставить какой-нить драйвер для корректной работы (у меня стоит клиент Axapta)?

P.S. Просьба сильно не пинать.
Старый 16.07.2007, 13:25   #4  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
А где, собственно, само исключение?

AxaptaConfiguration - это название ODBC источника или что?
Старый 16.07.2007, 13:27   #5  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Кстати Microsoft SQL Server 2005 JDBC Driver
Старый 16.07.2007, 13:35   #6  
Nitro is offline
Nitro
Участник
 
4 / 10 (1) +
Регистрация: 11.07.2007
Исключение вылетает на DriverManager.getConnection().
А AxaptaConfiguration - это поле Active configuration в Microsoft Business Solutions-Axapta Configuration Utility. Я так понимаю это надо указать, или это ошибка?

Кстати JDBC Driver у меня стоит. Я с его помощью к базе (Oracle) цепляюсь.
__________________
Я не волшебник, я только учусь...
Старый 16.07.2007, 13:36   #7  
konopello is offline
konopello
SAP
SAP
 
628 / 76 (4) ++++
Регистрация: 08.11.2005
Адрес: Минск
Проверяйте ODBC соединение других проблем не вижу.
Старый 16.07.2007, 13:43   #8  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Цитата:
Сообщение от Nitro Посмотреть сообщение
Active configuration в Microsoft Business Solutions-Axapta Configuration Utility.
Есть две вещи, которые вам могут быть нужны:
1. Работать через COM с клиентом аксапты
2. Работать через JDBC с сервером БД

Если 1. то тут надо использовать не JDBC, а ABC (во времена моей молодости для этого юзали JACOB - что юзаю щас - не знаю)

Если 2. то вам нужно не имя конфигурации а имя ODBC источника, каковой можно сконструировать по данным, который в конфигурации на закладке параметров БД
Старый 16.07.2007, 13:43   #9  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
И приведите, наконец, текст ошибки.
Старый 16.07.2007, 14:04   #10  
Nitro is offline
Nitro
Участник
 
4 / 10 (1) +
Регистрация: 11.07.2007
Цитата:
Сообщение от belugin Посмотреть сообщение
И приведите, наконец, текст ошибки.
Да , конечно , извиняюсь... вот:
Цитата:
java.sql.SQLException: [Microsoft][Диспетчер драйверов ODBC] Источник данных не найден и не указан драйвер, используемый по умолчанию
Цитата:
Есть две вещи, которые вам могут быть нужны:
1. Работать через COM с клиентом аксапты
2. Работать через JDBC с сервером БД

Если 1. то тут надо использовать не JDBC, а ABC (во времена моей молодости для этого юзали JACOB - что юзаю щас - не знаю)

Если 2. то вам нужно не имя конфигурации а имя ODBC источника, каковой можно сконструировать по данным, который в конфигурации на закладке параметров БД
Теперь все стало ясно. Спасибо.

Дело в том, что я переписываю программу с VB на Java. В VB это делается очень просто (через COM):
X++:
    Set Axapta = CreateObject("AxaptaCOMConnector.Axapta")
    Axapta.Logon2 AxaptaUserID, AxaptaPassword, AxaptaCompany, "", "", "", AxaptaConfiguration
Но в Java не могу найти решения.
Думаю, сначала надо выбрать путь по которому идти.
__________________
Я не волшебник, я только учусь...
Старый 16.07.2007, 14:08   #11  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Это путь #1 - соотвественно JACOB + JacobGEN или их аналоги
Старый 27.09.2013, 10:53   #12  
Foxa is offline
Foxa
Участник
 
3 / 10 (1) +
Регистрация: 27.09.2013
Привет! Новую тему решил не создавать, т.к. вопросы по тематике данной темы. Археологом не называть)

Я - начинающий программист Java. Задача - работа с клиентом Axapta. ОС Windows 7 x64.

Прочитав предыдущие сообщения понял, что мне подходит путь #1, как сказал belugin.
Долго гуглил прежде чем создавать тему, конкретного ответа не нашел. Надеюсь на Вашу помощь.

1. Подскажите, пожалуйста, как мне сконнетиться с клиентом Axapta в Java? Желательно по шагам.
2. Использовать ли мне Jacob или появился более простой/новый метод?
3. Будет здорово, если напишете хотя бы один пример работы с клиентом после коннекта.

Спасибо.

Последний раз редактировалось Foxa; 27.09.2013 в 10:56.
Старый 27.09.2013, 12:07   #13  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Если версия ax 2012, я бы еще рассмотрел работу через сервисы напрямую с АОСом
Старый 27.09.2013, 12:10   #14  
Foxa is offline
Foxa
Участник
 
3 / 10 (1) +
Регистрация: 27.09.2013
Версия не новая, а именно - Microsoft Business Solutions - Axapta 3.0
Старый 28.09.2013, 12:38   #15  
Ace of Database is offline
Ace of Database
Участник
Аватар для Ace of Database
 
873 / 649 (23) +++++++
Регистрация: 14.10.2004
Используйте бизнес-коннектор Аксапты. Это COM-объект "AxaptaCOMConnector.Axapta2".
Ниже привожу пример на VBA, как вызывать код Аксапты из других программ. В Аксапте создайте класс. В этом классе статический метод. Вызовите этот метод через бизнес-коннектор как указано ниже, только надо переписать код на Java. Я сейчас тоже программирую на Java, но не охота переписывать это


X++:
Sub testAxapta()
    Dim ax As New AxaptaCOMConnector.Axapta2
    ax.Logon2 "UserId", "Password", "DataAreaId", "RU", "AOSServerName", "AOSInstanceName"
    ax.CallStaticClassMethod "ClassName", "MethodName"
    ax.Logoff
End Sub
Если будете тестировать этот код VBA в Экселе, то в редакторе Visual Basic подключите библиотеку "AxaptaCOMConnector.Axapta2". Через меню Tools - References, поставьте галку напротив элемента "Axapta COM Connector 1.2 type Library". Если у вас этого элемента нет в списке, значит надо запустить конфигурационную утилиту в Аксапте, перейти на вкладку "Business Connector" и нажать кнопку "Register"

Последний раз редактировалось Ace of Database; 28.09.2013 в 12:43.
Старый 28.09.2013, 12:53   #16  
Ace of Database is offline
Ace of Database
Участник
Аватар для Ace of Database
 
873 / 649 (23) +++++++
Регистрация: 14.10.2004
У нас возникли сложности с бизнес-коннектором при переходом на Windows Server-2008. Раньше он у нас интенсивно использовался (несколько тысяч вызовов в день). Но при переходе на новый Windows он периодически (в 5% случаев) перестал срабатывать. Поэтому сейчас от него отказались.
Используем для взаимодействия с Аксаптой другой способ, который могу предложить. В какой-нибудь базе на SQL-Server создайте таблицу, в нее из Java записывайте команды, которая должна выполнить Аксапта. А в Аксапте создайте пакетную обработку, которая периодически будет считывать эти команды и выполнять их. В общем реализуйте обмен через стороннее хранилище.
В Аксапте 3.0 пакетная обработка срабатывает не чаще 1 раза в минуту плюс имеет свойство вываливаться пакетный сервер. Часто требуется немедленная реакция на команду из стороннего приложения. Поэтому мы и пакетную обрабоку не используем, а используем постоянно открытый клиент Аксапты, в котором на форме по таймеру каждую секунду считывается информация из стороннего хранилища.
Старый 28.09.2013, 12:58   #17  
Ace of Database is offline
Ace of Database
Участник
Аватар для Ace of Database
 
873 / 649 (23) +++++++
Регистрация: 14.10.2004
Я для себя решил идти по пути наименьшего сопротивления.
В связи с изменяющимися технологиями постепенно перестает работать код, использующий старые технологии.
Поэтому я решил больше не углубляться в "нативные" технологии Microsoft. Лучше использовать для обмена простые и классические способы - такие, как файловый обмен через папку на диске или обмен через таблицы в базе данных.
Старый 30.09.2013, 11:59   #18  
Foxa is offline
Foxa
Участник
 
3 / 10 (1) +
Регистрация: 27.09.2013
Ace of Database, огромное спасибо за подробные ответы. К сожалению, сейчас немного изменились задачи, и попробовать не смогу. Если обратно вернусь к этому вопросу, отпишусь.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
SysMailer и отправка сообщений через Axapta chanchala DAX: Программирование 9 11.02.2009 13:27
axaptabuilder: How to setup Axapta batch server running as user defined windows service Blog bot DAX Blogs 0 12.04.2007 16:10
axaptabuilder: How to build Axapta application from XPO files stored in Visual Source Safe. Blog bot DAX Blogs 0 22.11.2006 15:20
Говорят вышел SP2 для Axapta 3. Кто нибуть что знает на эту тему? soin DAX: Прочие вопросы 10 13.10.2003 10:43
Введение в Аксапту Роман Кошелев DAX: Прочие вопросы 0 18.12.2001 14:00
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 08:06.