我有一个Java标注,它返回一个Java ByteArray。我想将此ByteArray传递到数据库中具有BLOB数据类型列的表中,而无需对ByteArray进行任何修改。我正在使用OSB 11g作为中间件。因此,javacallout在OSB中完成,我正在使用数据库适配器连接到数据库并传递此值。
费耶
我进行了一些研究,发现OSB自己存储了ByteArray并将引用发送给DB,但我不希望这样做。我想将BYTEARRAY传递给我的数据库表。
简单来说:
通过OSB将ByteArray传递到oracle DB表中的BLOB类型列
我不想要这些解决方案(我已经尝试过):
https://blogs.oracle.com/ateamsoab2b/entry/an_example_of_how_to
最佳答案
我做了类似的事情,但是我正在使用Java Callout来执行OSB不支持的事情,即不再需要为适配器编写的有线协议。我想问一下为什么要使用Java Callout来执行JDBC操作,但这可能不重要。无论如何,如果您的代理服务是基于SOAP的服务,那么您将以CDATA
标记的形式返回它并带有一堆数据,该参考ID是客户端将随后调用(MTOM / XOP),或者最后是XML标签中的Base64编码的字符串。
我最终要做的是类似于XOP / MTOM的支持。您查看了哪些文档?以我自己的经验,我能够根据以下文档使事情起作用:
14.20 Adding Java Callout Actions in the Console(解释了可以传入的有限类型,并进而从Java标注返回到您的服务)
如果使用引用,则客户端更有可能需要单独请求该二进制文件。也就是说,有很多有关发送MTOM请求的文档。我没有太多经验。
MTOM using OSB and SoapUI
OSB & MTOM: WHEN TO USE INCLUDE BINARY DATA BY REFERENCE OR VALUE
Attachment Handling in OSB
39.3.8 Understanding XOP/MTOM Support
祝你好运。在使用OSB处理这些事情时,我有些头疼,但是一旦我掌握了Java-OSB边界点,它就会变得容易一些。