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