webservice 接口報404錯誤問題小結

1 背景介紹java

生產環境有兩臺應用服務器(RAC),EBS版本是12.1.3,服務器操做系統版本linuxlinux

節點一:10.192.80.87web

節點二:10.192.80.88sql

20180512(週六) 凌晨停應用和數據庫服務器,而後更換網絡設備(交換機),凌晨四點重啓數據庫和應用服務器數據庫

2 問題描述:apache

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 oracle

正常顯示:

因爲應用服務器是雙節點的,訪問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/,問題解決,可是不肯定跟下午清高速緩存是否有關。問題的具體緣由後面遇到再繼續補充。

相關文章
相關標籤/搜索