使用JAVA访问Dynamic AX方法

时间:2014-04-24 07:04:48

标签: c# java java-native-interface axapta

我只需使用Dynamic Ax连接JAVA 我经历了很多博客和文章,但它无法做到这一点 看到结构, enter image description here

以下是从dynamic AX

连接和获取数据的概括方式(或我们正在采取的方式)

C#代码中的更多内容
它使用AxaptaObject(应用程序连接器)和AxaptaContainer(数据容器)来加载Dynamic AX business connector(DLL文件)。


现在的问题是,

  • 使用JNI我们可以通过axapta加载java Dynamic Ax connector DLL file以上的returnsPOJO like object对象吗? (我希望不会)
  • 我们可以编写一些动态C#代码(Standalone C#program),如 method name of AX 功能接受Method parameter//fetch 'AxaptaObject', process method and respond to client(Kind of reflection in JAVA) ){
      DLL file
    }
    然后为上述功能创建JNI并使用C#访问该功能。
  • 微软是否提供了一些直接连接Dynamic AX的java库? (一定不能!!)
  • 有人做过类似的任务或者能帮我从这里过来吗?

问题是我们在AX中编写了业务逻辑,但现在我们需要将JAVA代码迁移到{{1}}。

3 个答案:

答案 0 :(得分:2)

  

使用JNI我们可以通过加载Dynamic Ax连接器DLL文件在java中使用axapta对象吗? (我希望不会)

不,可能不直接

  

我们可以编写一些动态C#代码(Standalone C#program),   returnPOJO like object function ....然后为上面的函数创建一个DLL文件,并使用JNI访问它。

有点,你不能直接将一些C#对象传递给Java 但你应该能够为一些C#dll创建一个JNI包装器并将它们连接在一起。我建议创建一个独立的DLL,它具有一些统一的接口,可以与AX交互以完成您的需要。您可以使用本机可执行文件执行所有测试,并在深入了解JNI部分之前解决您的错误。这样做的原因是调试JNI问题是一场噩梦,如果您要从本机代码跳转到JVM然后再转移到.NET框架,那么调试几乎是不可能的。在您对库正常运行感到满意之后,为您的新.NET本机库创建一个JNI(甚至是JNA)包装器,基本上只需使用您的库并将结果转换为本机代码中的Java对象。

  

微软是否提供了一些直接连接Dynamic AX的Java库? (一定不能!!)

我严重怀疑它。上述方法假定您只想在.NET支持的Windows平台上运行此JNI代码。如果不是这种情况,则需要直接通过数据库或其他基于API的接口与支持服务器通信。我假设你在这里讨论的业务连接器是用C#或.NET实现的部分。如果这是开源的,或者记录了它用于与服务器通信的协议,请跳过本机代码,然后在Java中重新实现该连接器。如果没有,你唯一的选择就是逆向工程,它不会很漂亮。

答案 1 :(得分:1)

Web服务是最佳选择。您可以在AX 2012中本地开发WPF服务,如果使用AX 2009,您可以在Visual Studio中手动开发它们并通过Business Connector连接到AX。

没有,而且我确信除了某种Web服务之外,还没有一种方法可以直接从Java连接到AX。 Business Connector已停止使用.NET,因此根本不需要其他版本。

答案 2 :(得分:0)

可以使用Java创建Web服务。您可以创建Java Web服务的c#客户端。您可以从Dynamics Ax访问c#客户端的dll。