使用UTL_DBWS调用Web服务时出错

时间:2011-07-19 11:27:33

标签: web-services oracle plsql

我按照Oracle tutorial中的示例如何调用Web服务。

当我用

运行它时

l_wsdl_url := 'http://www.oracle-base.com/webservices/server.php?wsdl';

工作正常。

但是,如果我在Eclipse中创建自己的动态Web应用程序,并生成oracle presents的SAME wsdl,并将代码更改为:

l_wsdl_url        := 'http://localhost:8080/MyProject/services/CalculatorPort?wsdl';

我得到一个例外:

    ORA-29532: Java call terminated by uncaught Java exception: 
java.lang.IllegalAccessException: error.build.wsdl.model: oracle.j2
ORA-29532: Java call terminated by uncaught Java exception: 
java.lang.IllegalAccessException: error.build.wsdl.model: oracle.j2

所以我添加了代码:

sys.utl_dbws.set_http_proxy('http://localhost:8080');

我得到以下异常:

 ORA-29532: Java call terminated by uncaught Java exception: 
java.lang.IllegalAccessException: error.build.wsdl.model: oracle.j2ORA-29532: Java call 
terminated by uncaught Java exception: java.lang.IllegalAccessException: 
    error.build.wsdl.model: oracle.j2ee.ws.commons.tools.api.WsdlValidationExcpetion:
 faultCode = PARSER_EXCEPTION error reading file at: 
http://localhost:8080/MyProject/services/CalculatorPort?wsdl: http://localhost

使用PL / SQL(使用soap-ui)工具可以很好地运行Web服务。

PL / SQL位于与我的localhost应用程序不同的机器上的防火墙后面。

请求中有什么问题?

1 个答案:

答案 0 :(得分:0)

如果我理解正确,那么你错误的是你试图在与你不同的机器中调用localhost。在PL / SQL上进行测试时,请使用Web服务所在机器的IP替换localhost。