Cisco AXL - 执行 SQL 查询,解析响应
Cisco AXL - Execute SQL Query, parse response
AXL 12.5
、Apache CXF 3.3.6
、OpenJDK 14
、Spring Boot 2.3.0
,执行 SQL 查询
String sqlStmt = "SELECT name FROM typeuserlocale";
ExecuteSQLQueryReq executeSQLQueryReq = new ExecuteSQLQueryReq();
executeSQLQueryReq.setSql(sqlStmt);
ExecuteSQLQueryRes executeSQLQueryRes = axlPort.executeSQLQuery(executeSQLQueryReq);
List<Object> rows = executeSQLQueryRes.getReturn().getRow();
给出了List<Object>
的响应,如何解析结果?将对象投射到什么?
调试显示是ElementNSImpl
。尝试将其转换为 ElementNSImpl
导致 IDE 添加依赖项:
<dependency>
<groupId>xerces</groupId>
<artifactId>xercesImpl</artifactId>
<version>2.9.1</version>
</dependency>
但转换它导致异常:
java.lang.ClassCastException:
class com.sun.org.apache.xerces.internal.dom.ElementNSImpl cannot be cast to class org.apache.xerces.dom.ElementNSImpl (com.sun.org.apache.xerces.internal.dom.ElementNSImpl is in module java.xml of loader 'bootstrap';
org.apache.xerces.dom.ElementNSImpl is in unnamed module of loader 'app')
是否有可能 AXL 服务存根是使用 wsimport 的 Oracle JDK 版本生成的,而您的应用程序是 运行 OpenJDK?在这种情况下,您可以尝试使用 OpenJDK wsdl2java 重新生成(不确定客户端代码是否会因此发生任何更改。)
此处有一个有效的 Cisco DevNet 示例演示了解析:https://github.com/CiscoDevNet/axl-java-samples,但它基于 Oracle JDK 1.8
必须对 org.w3c.dom.Element
执行强制转换,而且效果很好。
AXL 12.5
、Apache CXF 3.3.6
、OpenJDK 14
、Spring Boot 2.3.0
,执行 SQL 查询
String sqlStmt = "SELECT name FROM typeuserlocale";
ExecuteSQLQueryReq executeSQLQueryReq = new ExecuteSQLQueryReq();
executeSQLQueryReq.setSql(sqlStmt);
ExecuteSQLQueryRes executeSQLQueryRes = axlPort.executeSQLQuery(executeSQLQueryReq);
List<Object> rows = executeSQLQueryRes.getReturn().getRow();
给出了List<Object>
的响应,如何解析结果?将对象投射到什么?
调试显示是ElementNSImpl
。尝试将其转换为 ElementNSImpl
导致 IDE 添加依赖项:
<dependency>
<groupId>xerces</groupId>
<artifactId>xercesImpl</artifactId>
<version>2.9.1</version>
</dependency>
但转换它导致异常:
java.lang.ClassCastException:
class com.sun.org.apache.xerces.internal.dom.ElementNSImpl cannot be cast to class org.apache.xerces.dom.ElementNSImpl (com.sun.org.apache.xerces.internal.dom.ElementNSImpl is in module java.xml of loader 'bootstrap';
org.apache.xerces.dom.ElementNSImpl is in unnamed module of loader 'app')
是否有可能 AXL 服务存根是使用 wsimport 的 Oracle JDK 版本生成的,而您的应用程序是 运行 OpenJDK?在这种情况下,您可以尝试使用 OpenJDK wsdl2java 重新生成(不确定客户端代码是否会因此发生任何更改。)
此处有一个有效的 Cisco DevNet 示例演示了解析:https://github.com/CiscoDevNet/axl-java-samples,但它基于 Oracle JDK 1.8
必须对 org.w3c.dom.Element
执行强制转换,而且效果很好。