![]() |
#1 |
Участник
|
![]()
Подскажите пожалуйста, как подключиться к Axapta из Java ?
Заранее спасибо. |
|
![]() |
#2 |
SAP
|
Вопрос не информативен, но может быть вы это имели ввиду
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); |
|
![]() |
#3 |
Участник
|
Здравствуйте. Спасибо за ответ.
Да, я про это как раз и говорил. Только у меня не получается сконнектиться. =( Делаю так: 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 P.S. Просьба сильно не пинать. |
|
![]() |
#4 |
Участник
|
А где, собственно, само исключение?
AxaptaConfiguration - это название ODBC источника или что? |
|
![]() |
#5 |
Участник
|
|
|
![]() |
#6 |
Участник
|
Исключение вылетает на DriverManager.getConnection().
А AxaptaConfiguration - это поле Active configuration в Microsoft Business Solutions-Axapta Configuration Utility. Я так понимаю это надо указать, или это ошибка? Кстати JDBC Driver у меня стоит. Я с его помощью к базе (Oracle) цепляюсь.
__________________
Я не волшебник, я только учусь... ![]() |
|
![]() |
#7 |
SAP
|
Проверяйте ODBC соединение других проблем не вижу.
|
|
![]() |
#8 |
Участник
|
Цитата:
1. Работать через COM с клиентом аксапты 2. Работать через JDBC с сервером БД Если 1. то тут надо использовать не JDBC, а ABC (во времена моей молодости для этого юзали JACOB - что юзаю щас - не знаю) Если 2. то вам нужно не имя конфигурации а имя ODBC источника, каковой можно сконструировать по данным, который в конфигурации на закладке параметров БД |
|
![]() |
#9 |
Участник
|
И приведите, наконец, текст ошибки.
|
|
![]() |
#10 |
Участник
|
Да , конечно , извиняюсь... вот:
Цитата:
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 Думаю, сначала надо выбрать путь по которому идти.
__________________
Я не волшебник, я только учусь... ![]() |
|
![]() |
#11 |
Участник
|
Это путь #1 - соотвественно JACOB + JacobGEN или их аналоги
|
|
![]() |
#12 |
Участник
|
Привет! Новую тему решил не создавать, т.к. вопросы по тематике данной темы. Археологом не называть)
Я - начинающий программист Java. Задача - работа с клиентом Axapta. ОС Windows 7 x64. Прочитав предыдущие сообщения понял, что мне подходит путь #1, как сказал belugin. Долго гуглил прежде чем создавать тему, конкретного ответа не нашел. Надеюсь на Вашу помощь. 1. Подскажите, пожалуйста, как мне сконнетиться с клиентом Axapta в Java? Желательно по шагам. 2. Использовать ли мне Jacob или появился более простой/новый метод? 3. Будет здорово, если напишете хотя бы один пример работы с клиентом после коннекта. Спасибо. Последний раз редактировалось Foxa; 27.09.2013 в 10:56. |
|
![]() |
#13 |
Участник
|
Если версия ax 2012, я бы еще рассмотрел работу через сервисы напрямую с АОСом
|
|
![]() |
#14 |
Участник
|
Версия не новая, а именно - Microsoft Business Solutions - Axapta 3.0
|
|
![]() |
#15 |
Участник
|
Используйте бизнес-коннектор Аксапты. Это 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 Последний раз редактировалось Ace of Database; 28.09.2013 в 12:43. |
|
![]() |
#16 |
Участник
|
У нас возникли сложности с бизнес-коннектором при переходом на Windows Server-2008. Раньше он у нас интенсивно использовался (несколько тысяч вызовов в день). Но при переходе на новый Windows он периодически (в 5% случаев) перестал срабатывать. Поэтому сейчас от него отказались.
Используем для взаимодействия с Аксаптой другой способ, который могу предложить. В какой-нибудь базе на SQL-Server создайте таблицу, в нее из Java записывайте команды, которая должна выполнить Аксапта. А в Аксапте создайте пакетную обработку, которая периодически будет считывать эти команды и выполнять их. В общем реализуйте обмен через стороннее хранилище. В Аксапте 3.0 пакетная обработка срабатывает не чаще 1 раза в минуту плюс имеет свойство вываливаться пакетный сервер. Часто требуется немедленная реакция на команду из стороннего приложения. Поэтому мы и пакетную обрабоку не используем, а используем постоянно открытый клиент Аксапты, в котором на форме по таймеру каждую секунду считывается информация из стороннего хранилища. |
|
![]() |
#17 |
Участник
|
Я для себя решил идти по пути наименьшего сопротивления.
В связи с изменяющимися технологиями постепенно перестает работать код, использующий старые технологии. Поэтому я решил больше не углубляться в "нативные" технологии Microsoft. Лучше использовать для обмена простые и классические способы - такие, как файловый обмен через папку на диске или обмен через таблицы в базе данных. |
|
![]() |
#18 |
Участник
|
Ace of Database, огромное спасибо за подробные ответы. К сожалению, сейчас немного изменились задачи, и попробовать не смогу. Если обратно вернусь к этому вопросу, отпишусь.
|
|
|
|