webservice 接口报404错误问题小结
1 背景介绍
生产环境有两台应用服务器(RAC),EBS版本是12.1.3,服务器操作系统版本linux
节点一:10.192.80.87
节点二:10.192.80.88
20180512(周六) 凌晨停应用和数据库服务器,然后更换网络设备(交换机),凌晨四点重启数据库和应用服务器
2 问题描述:
1)EBS系统对接的外围系统的webservice接口无法正常访问,以HR凭证接口为例,报错信息如下:
[18-5-14 20:11:21:408 CST] 000427cd SystemErr R AxisFault
faultCode: {http://xml.apache.org/axis/}HTTP
faultSubcode:
faultString: (404)Not Found
faultActor:
faultNode:
faultDetail:
{}:return code: 404
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<HTML><HEAD>
<TITLE>404 Not Found</TITLE>
</HEAD><BODY>
<H1>Not Found</H1>
The requested URL /webservices/SOAProvider/plsql/cux_hr_inter_pkg/ was not found on this server.<P>
</BODY></HTML> {http://xml.apache.org/axis/}HttpErrorCode:404
2)直接访问EBS提供的webservice接口URL:http://ebs.cic.inter:8000/webservices/SOAProvider/plsql/cux_hr_inter_pkg/,发现
奇怪的现象,有时候报错有时候不报错,通过网线连接公司内网报错,通过wifi上网测试不报错
报错信息:No WebService Provider is registered at this URL
正常显示:

由于应用服务器是双节点的,访问ebs.cic.inter后通过F5(负载均衡) 实现随机访问某个节点,所以将上面的webservice接口URL中的域名改成IP,重试
发现访问节点一:http://10.192.80.87:8000/webservices/SOAProvider/plsql/cux_hr_inter_pkg/,正常;
访问节点二:http://10.192.80.88:8000/webservices/SOAProvider/plsql/cux_hr_inter_pkg/,报错;
3)adadmin用户登录EBS,发现报错信息:
服务供应商访问权限不可用。您可能无法查看完整的服务信息。有关详情,请查看服务供应商日志

备注:这个问题一般是webserver没有成功生成WSDL或者生成了但是没有部署成功
4)重新生成WSDL并部署
由于是多节点环境,Oracle推荐使用后台脚本生成和部署WS。这是因为在多节点环境,如果通过UI生成一个Service,我们可能不知道到底是哪个节点的服务生成了,
我们需要每个节点进行检查才知道。因此采用后台针对每一个节点生成和部署WS。
具体参考文档:“Oracle实践之EBS Integrated SOA Gateway实施指南_modify by renjun.doc”的 “5.3 ISG多节点Web Service生成和部署”
a 生成WS
$ cd $FND_TOP/bin
$ soagenerate.sh irepname=CUX_HR_INTER_PKG logfile=/tmp/cux_ws_gen.log
查看/tmp/cux_ws_gen.log的日志如下:
########################
Please see Service Provider logs for more details
ServiceGenerator invoked at : Tue May 15 11:32:01 CST 2018
Using following properties :-
INST_TOP = /ebsapp/inst/apps/EBS2_ebsapp2
OAFM oc4j.properties = /ebsapp/inst/apps/EBS2_ebsapp2/ora/10.1.3/j2ee/oafm/config/oc4j.properties
EXTERNAL_URL = http://ebs.cic.inter:8000
JTFDBCFILE = /ebsapp/inst/apps/EBS2_ebsapp2/appl/fnd/12.0.0/secure/EBS.dbc
SOA_SERVER_TEMP_DIRECTORY_LOCATION = /ebsapp/inst/apps/EBS2_ebsapp2/soa/
SOA_SERVER_URL = http://ebsapp2.cic.inter:8000
SOA_ENABLE_STANDALONE_LOGGING = true
SOA_CREATE_DB_CONN_CONTEXT = true
irepName is : CUX_HR_INTER_PKG
ClassId = 4412
Generating service with classId = 4412
WSDL Location = /ebsapp/inst/apps/EBS2_ebsapp2/soa//PLSQL/4412/CUX_HR_INTER_PKG_soap.wsdl
Service Generated.
ServiceGenerator executed successfully.Please clear the middle tier cache for the changes to reflect on the IREP UI correctly
ServiceGenerator ends at : Tue May 15 11:33:54 CST 2018
在$INST_TOP/soa/PLSQL/4412/下成功生成相关文件
$ cd $INST_TOP/soa/PLSQL/4412
$ ll
total 52
-rw-r----- 1 ebsapp ebsapp 1245 May 15 12:49 AppsContextHeader.wsdl
-rw-r----- 1 ebsapp ebsapp 13138 May 15 12:49 APPS_ISG_PROCESS_HR_INTER_CUX_HR_INTER_PKG-24PROCESS_HR_I.xsd
-rw-r----- 1 ebsapp ebsapp 3007 May 15 12:49 CUX_HR_INTER_PKG_soap_http.wsdl
-rw-r----- 1 ebsapp ebsapp 3240 May 15 12:49 CUX_HR_INTER_PKG_soap.wsdl
-rw-r----- 1 ebsapp ebsapp 614 May 15 12:49 CUX_HR_INTER_PKG.wsdl
-rw-r----- 1 ebsapp ebsapp 277 May 15 12:49 ISG_PROCESS_HR_INTER_drop.sql
-rw-r----- 1 ebsapp ebsapp 11486 May 15 12:49 ISG_PROCESS_HR_INTER.sql
-rw-r----- 1 ebsapp ebsapp 2916 May 15 12:49 PROCESS_HR_INTER.wsdl
b 部署WS
$ cd $FND_TOP/bin
$ soadeploy.sh irepname=CUX_HR_INTER_PKG logfile=/tmp/cuxsoadeploy.log
查看部署WS的日志 /tmp/cuxsoadeploy.log ,如下:
########################
Please see Service Provider logs for more details
ServiceDeployer invoked at : Tue May 15 10:35:10 CST 2018
Using following properties :-
INST_TOP = /ebsapp/inst/apps/EBS2_ebsapp2
OAFM oc4j.properties = /ebsapp/inst/apps/EBS2_ebsapp2/ora/10.1.3/j2ee/oafm/config/oc4j.properties
EXTERNAL_URL = http://ebs.cic.inter:8000
JTFDBCFILE = /ebsapp/inst/apps/EBS2_ebsapp2/appl/fnd/12.0.0/secure/EBS.dbc
SOA_SERVER_TEMP_DIRECTORY_LOCATION = /ebsapp/inst/apps/EBS2_ebsapp2/soa/
SOA_SERVER_URL = http://ebsapp2.cic.inter:8000
SOA_CREATE_DB_CONN_CONTEXT = true
irepName is : CUX_HR_INTER_PKG
Policy = USERNAME_TOKEN
Deploying Service for IRepName CUX_HR_INTER_PKG
ClassId = 4412
Error in Service Deployment.
SystemError: Error while sending message to server. http://ebsapp2.cic.inter:8000/webservices/SOAProvider/EbizAuth?DeployService=4412&soa_ticket=NL4TxBfZdo-bW-_0WFWF6Q..&authtype=USERNAME_TOKEN&
oracle.apps.fnd.soa.util.SOAException: SystemError: Error while sending message to server. http://ebsapp2.cic.inter:8000/webservices/SOAProvider/EbizAuth?DeployService=4412&soa_ticket=NL4TxBfZdo-bW-_0WFWF6Q..&authtype=USERNAME_TOKEN&
at oracle.apps.fnd.soa.provider.util.ServerAccess.sendMessageToServer(ServerAccess.java:92)
at oracle.apps.fnd.soa.ui.ProviderAccess.deployService(ProviderAccess.java:129)
at oracle.apps.fnd.soa.provider.ServiceDeployer.deploySOAService(ServiceDeployer.java:84)
at oracle.apps.fnd.soa.provider.ServiceDeployer.deploySingleService(ServiceDeployer.java:112)
at oracle.apps.fnd.soa.provider.ServiceDeployer.main(ServiceDeployer.java:488)
由部署日志可以看出部署失败。
3 原因分析
节点一一切正常,节点二SOA访问有问题,webservice接口的ws无法部署。
1)假设一:可能之前重启应用服务器节点二的时候,重启存在问题,导致SOA服务没有起成功;
建议解决方法:重启应用服务器
2)假设二:可能跟缓存有关, oafm和oacore 这部分缓存估计是写在磁盘文件里的,重启不会清理,而是直接读取以前缓存的数据 ,所以需要手工清理掉,再去读取最新的配置,
可能是ip地址变动或者网络配置变动导致的,一般不会出现。
建议处理方法:清理高速缓存,然后重启应用服务器
4 实际解决方法
这边是下午先清了高速缓存,然后晚上将节点二服务器重启,能够成功访问节点二:http://10.192.80.88:8000/webservices/SOAProvider/plsql/cux_hr_inter_pkg/,问题解决,但是不确定跟下午清高速缓存是否有关。问题的具体原因后面遇到再继续补充。
webservice 接口报404错误问题小结的更多相关文章
- WinServer2008R2 + IIS 7.5 + .NET4.0 经典模式 运行WebAPI程序报404错误的解决方案
在Windows Server 2008 R2系统下,IIS 7.5 + .NET Framework 4.0的运行环境,以经典模式(Classic Mode)部署一个用.NET 4.0编译的 Web ...
- Eclipse配置tomcat后,启动tomcat,访问tomcat报404错误
当你在Eclipse中新建一个工程,配置好tomcat,然后测试tomcat是否配置成功的时候,报404错误异常. 解决方法: 1,把工程文件删除,重新建立一个新的工程, 2,新建一个工程. 3,Ne ...
- 在ubuntu上面安装phpmyadmin后,报404错误
安装完mysql后,我想装一个phpmyadmin方便mysql管理. 在终端执行命令:sudo apt-get install libapache2-mod-auth-mysql phpmyadmi ...
- IntelliJ IDEA 文件夹重命名--解决重命名后js文件引用找不到路径报404错误
情景: 说明:ExtJS是我后来的改的名字--原来叫extjs,可是当我把在页面的引用地址改为 src="ExtJS/.."后页面就报404错误,我把它改回之前的extjs就可以( ...
- SpringMVC中用@ParamVariable传递的参数包含斜杠(/)时,匹配不了报404错误的解决方案
今天做网站[标签]筛选功能时,出现了这么个奇葩的问题. 我是直接通过<a>标签中href来跳转的,url中包含汉字 <a href="/tags/标签A"> ...
- eclipse启动tomcat 访问http://localhost:8080 报404错误
eclipse启动tomcat 访问http://localhost:8080 报404错误 Server Locations修改后会变灰,如果需要更改设置,则需要移除与Tomcat服务器关联的项目, ...
- webapi 发布接口报405错误(angularjs2.0)
参考链接:http://www.cnblogs.com/shenbin/p/5680976.html web访问接口报405错误,以前的jQuery访问方式访问接口没有问题. 但是换成angularj ...
- tomcat第一次使用正常启动后访问8080端口报404错误
问题:tomcat第一次使用正常启动后访问8080端口报404错误 解决办法:双击tomcat调出tomcat的xml文件页面,Server Locations 默认是选第一行即Use Workspa ...
- eclipse启动tomcat访问http://localhost:8080 报404错误
eclipse正常启动tomcat,但是 访问http://localhost:8080 却报404错误 修改下配置 就好操作如下图 打开eclipse的server视图,双击配置好的那个tomcat ...
随机推荐
- 使用openSSL构造一个支持https的nodejs服务器
首先通过下面的链接下载openSSL https://slproweb.com/products/Win32OpenSSL.html 下载完毕后,执行openssl进入交互式界面: 使用命令生成pri ...
- Spring Cloud(四)服务提供者 Eureka + 服务消费者 Feign
上一篇文章,讲述了如何通过RestTemplate + Ribbon去消费服务,这篇文章主要讲述如何通过Feign去消费服务. Feign简介 Feign是一个声明式的伪Http客户端,它使得写Htt ...
- openstack 平台P2V迁移
目录 [Openstack]P2V迁移 一.前言 二.前提准备 三.操作步骤 1.安装迁移中转机 2.配置中转机 3.创建存储池(可选) 4.制作virt-p2v的 U盘引导启动工具 5.操作物理机, ...
- opencv读取图像python和c++版本的结果不同
问题: 在读取同一张图像时,python读取的结果和c++读取的结果差异较大,测试图像中最大误差达到16. 原因: python的opencv采用的是4.1.1,c++采用的是3.1.0,在解析JPE ...
- Dart 面向对象 类 方法
Dart是一门使用类和单继承的面向对象语言,所有的对象都是类的实例,并且所有的类都是Object的子类. 面向对象编程(OOP)的三个基本特征是:封装.继承.多态 封装:封装是对象和类概念的主要特性. ...
- 四:MVC之LINQ方法语法
linq 查询 有两种语法 ,前面我们说了一种,接下来说方法语法(我读着一直很绕口) 查询语法,方法语法 ------------------------以下文字都是复制-------------- ...
- Matlab[linux]安装问题
OS : Arch Linux 桌面:Gnome X11 软件是从网上下载的iso文件,对文件挂载或者使用解压软件解压,我个人更喜欢挂载,解压有点麻烦(我比较懒) 软件:matlab(R2016) 开 ...
- Selenium&Appium四种等待方式
一.摘要 本博文主要介绍自动化测试中,无论是selenium或是Appium的四种等待方式,合理的使用等待对代码的稳定性,测试效率都有很大的提高 隐式等待:是在尝试发现某个元素的时候,如果没能立刻发现 ...
- gitlab 错误处理
用gitolite新建项目,clone后首次push,可能会出现: $ git push No refs in common and none specified; doing nothing. Pe ...
- C#的队列(Queue,ConcurrentQueue)和堆栈(Stack,ConcurrentStack)
一.Queue 表示对象的先进先出(FIFO)集合,非线程安全 常用方法 Dequeue 入队 Enqueue 出队 Contains 队列中是否存在某元素 Clear 清空队列 封装: /// ...