Web services 使用UTL_DBWS调用web服务时出错

Web services 使用UTL_DBWS调用web服务时出错,web-services,oracle,plsql,Web Services,Oracle,Plsql,我遵循了如何调用web服务的示例 当我运行它时 l_wsdl_url:='http://www.oracle-base.com/webservices/server.php?wsdl'; 它很好用 但是,如果我在Eclipse中创建自己的动态web应用程序,生成与oracle相同的wsdl,并将代码更改为: l_wsdl_url := 'http://localhost:8080/MyProject/services/CalculatorPort?wsdl'; 我得到一个例外:

我遵循了如何调用web服务的示例

当我运行它时

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

它很好用

但是,如果我在Eclipse中创建自己的动态web应用程序,生成与oracle相同的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
 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
因此,我在代码中添加了:

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.j2
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.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
web服务使用PL/SQL(使用soap ui)工具运行良好

PL/SQL位于防火墙后面,与我的本地主机应用程序不同的机器上


请求中有什么错误?

如果我理解正确,错误在于您试图在不同的计算机中调用localhost。在PL/SQL上测试时,请用web服务所在机器的ip替换localhost。

我遇到了utl_dbws问题(主要是由于上游问题,例如未正确安装)。试着使用utl_http看看你是否能让它工作(只是作为一个整体)。您使用的是什么版本的Oracle?Oracle 10g。我会试试url_http有什么区别?它的级别比utl_dbws低(它可以调用html页面以及web服务等)。然而,在这一点上,它需要更多的工作来询问产生的SOAP调用。我发现“低级”utl_http更容易使用——可能是因为有大量的示例!但它应该能够显示您是否能够建立连接……您正在测试的oracle实例是否位于您的计算机本地?(只有在本地运行oracle时,“localhost”才起作用(pl/sql引擎正在oracle实例上运行,因此如果它在服务器123上运行,那么您需要使用oracle Box可见的地址来量化包中的WSDL服务。“set_http_proxy”是告诉dbws使用代理服务器,而不仅仅是指向您的Box。很明显,oracle Base不是oracle官方站点。这是一个由蒂姆·霍尔(Tim Hall)维护的网站,他是一个非常聪明的家伙,对洋葱了如指掌。