如何通过OSB(Oracle Service Bus)将BLOB类型数据(ByteArray)传递给DB(具有BLOB类型列的数据库中的表)

时间:2016-03-17 08:08:02

标签: java database oracle osb

我有一个 Java Callout ,它返回一个Java ByteArray 。我想将此 ByteArray 传递给我的数据库中的表,该表具有 BLOB数据类型的列,而不对ByteArray进行任何修改。我使用OSB 11g作为中间件。所以javacallout在OSB中完成,我使用DB适配器连接到DB并传递该值。

enter image description here

FYI

我做了一些研究,发现OSB将ByteArray存储起来并将引用发送给DB,但我不希望这样做。我想传递BYTEARRAY,因为它正是我的数据库表。

简单来说: -

将ByteArray通过OSB传递到oracle DB中的表中的BLOB类型列

我不想要这些解决方案(我已经尝试过): - https://blogs.oracle.com/ateamsoab2b/entry/an_example_of_how_to

2 个答案:

答案 0 :(得分:0)

我做了类似的事情,但我正在使用Java Callout来做一些OSB不支持的事情,即一个适配器不会被编写的有线协议。我问你为什么要使用Java Callout进行JDBC操作,但这可能不是重点。无论如何,如果您的代理服务是基于SOAP的服务,那么您将作为带有一堆数据的CDATA标记返回此标记,该标记是客户端将随后生成的参考标识调用(MTOM / XOP),或者最后,在XML标记中调用Base64编码的字符串。

我最终做的是类似于XOP / MTOM的支持。您查看了哪些文档?根据我自己的经验,我能够根据以下文档制作工作:

14.20 Adding Java Callout Actions in the Console(解释了可以传入的有限类型,然后将返回的java标注发送到您的服务)

如果您使用引用,则客户端更有可能需要单独请求该二进制文件。也就是说,有很多关于发送MTOM请求的文档。我没有多少经验。

祝你好运。我有一些头痛与OSB合作操纵这些东西,但是一旦我了解了Java-OSB的边界点,它就更容易了。

答案 1 :(得分:0)

编写java代码并执行java调用,并将字节数组引用转换为所需的java对象。它将获取引用并返回您可以存储在BLOB中的java对象