Я сгенерировал клиентские классы Java с помощью axis2, которые используют веб-сервис Taleo SOAP и дают ответ, который я хочу передать функции PL SQL в виде строки XML.Проблема в том, что строка XML не передается в PL SQL, но я могу напечатать эту же строку в стандартном выводе Java.Самое смешное, что если я жестко закодирую ту же строку, что и возвращаемое значение, строка передается в функцию PL SQL.Кто-то поможет мне решить эту проблему.
Код для извлечения ответа из веб-службы:
FindPartialEntitiesResponse rsp = response.getFindPartialEntitiesResponse();
Entities entities = rsp.getEntities();
Для печати в стандартном выводе я делаю это:
String xmlString = rsp.toString()
System.out.println(xmlString);
иВ стандартный вывод выводится следующее:
<xml-fragment xmlns:ns1="http://www.taleo.com/ws/tee800/2009/01/find"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<root:Entities pageIndex="1" pageCount="1" pagingSize="200" entityCount="1"
xmlns:root="http://www.taleo.com/ws/tee800/2009/01/find"
xmlns:e="http://www.taleo.com/ws/tee800/2009/01"
xmlns="http://www.taleo.com/ws/integration/toolkit/2005/07">
<e:Entity xsi:type="e:Candidate">
<e:Birthday>xxxxxxx</e:Birthday>
<e:City>xxxx</e:City>
<e:EmailAddress>xxxx@invalidemail.com</e:EmailAddress>
<e:FirstName>xxxx</e:FirstName>
<e:LastName>xxxx</e:LastName>
<e:MiddleInitial>xxxx</e:MiddleInitial>
<e:MobilePhone>xxxxxx</e:MobilePhone>
</e:Entity>
</root:Entities>
</xml-fragment>
Когда я возвращаю переменную xmlString в функцию PL SQL следующим образом:
public static java.lang.String exportCandidates() {
.
.
.
String xmlString = rsp.toString()
System.out.println(xmlString);
return xmlString;
}
Я ничего не получаю в функции PL SQL
Когда я жестко кодирую XML в качестве возвращаемого значения следующим образом:
public static java.lang.String exportCandidates() {
.
.
.
return "<xml-fragment xmlns:ns1="http://www.taleo.com/ws/tee800/2009/01/find" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <root:Entities pageIndex="1" pageCount="1" pagingSize="200" entityCount="2" xmlns:root="http://www.taleo.com/ws/tee800/2009/01/find" xmlns:e="http://www.taleo.com/ws/tee800/2009/01" xmlns="http://www.taleo.com/ws/integration/toolkit/2005/07"> <e:Entity xsi:type="e:Candidate"> <e:Birthday>xxxxxxx</e:Birthday> <e:City>xxxx</e:City> <e:EmailAddress>xxxx@invalidemail.com</e:EmailAddress> <e:FirstName>xxxx</e:FirstName> <e:LastName>xxxx</e:LastName> <e:MiddleInitial>xxxx</e:MiddleInitial> <e:MobilePhone>xxxxxx</e:MobilePhone> </e:Entity> </root:Entities></xml-fragment>";
}
Я получаю XML в PL SQL как возвращенный из Java
Функция PL SQL выглядит следующим образом
CREATE OR REPLACE FUNCTION taleowscall RETURN VARCHAR2 AS LANGUAGE JAVA NAME 'TaleoWSClient.exportCandidates() return java.lang.String';
Кто-нибудь, пожалуйста, помогите демистифицировать это, я использую Oracle 12.1, которая работает под управлением JVM версии 1.6.Мои классы Java скомпилированы с той же версией Java 1.6