cancel
Showing results for 
Search instead for 
Did you mean: 

URL prefix system selection via web dispatcher

former_member186273
Participant
0 Kudos

Hi together

I'm using web dispatcher 7.20 as the entry point of my system landscape. I have a backend system that using ABAP stack, HANA XSEngine odata service and my local SAPUI5 application on tomcat. What I'm trying to achieve is configure the web dispatcher to do system selection via url prefix. I must miss some simple point and I'm really stumped.

My problem is no matter what the url prefix is, it always select the first system which is wdisp/system_0.

For instance, if I tried to connect https://pvgn50819959a:8043//tmp/i076004/xsjs-svcs/logic/sysoverview.xsjs.  It should go to the wdisp/system_2 because the url prefix /tmp/xsodata do match system_2, however, the response indicated 404 error on tomcat which ref to system_0.

HTTP Status 404 - /tmp/i076004/xsjs-svcs/logic/sysoverview.xsjs


type Status report

message /tmp/i076004/xsjs-svcs/logic/sysoverview.xsjs

description The requested resource (/tmp/i076004/xsjs-svcs/logic/sysoverview.xsjs) is not available.


Apache Tomcat/6.0.35

I tried to configure http modification but it seems doesn't work at all, I even don't know it take effect after restarting web dispatcher. So how can I tell if the modification actually works. I can't find anything related in dev_webdisp trace file.

icm/HTTP/mod_0 = PREFIX=/,FILE=C:\webdispatcher\abapToLocalUrl.txt

Any help will be appreciated.

Here is piece of profile configuration.

ssl/ssl_lib  = C:\webdispatcher\sapcrypto.dll

ssl/server_pse = C:\webdispatcher\sec\SAPSSLS.pse

icm/HTTPS/verify_client = 0

ssl/client_pse = C:\webdispatcher\sec\SAPSSLS.pse

wdisp/ssl_encrypt = 2

wdisp/ssl_cred = C:\webdispatcher\sec\cred_v2

wdisp/ssl_auth = 2

ssf/name = SAPSECULIB

ssf/ssfapi_lib = C:\webdispatcher\sapcrypto.dll

wdisp/ssl_certhost = PVGN50819959A.dhcp.pvgl.sap.corp

icm/HTTPS/forward_ccert_as_header = true

wdisp/ssl_ignore_host_mismatch = true

wdisp/add_client_protocol_header = true

wdisp/system_conflict_resolution = 2

wdisp/system_0 = SID=EXT, EXTSRV=https://localhost.dhcp.pvgl.sap.corp:8443, SRCSRV=*:8043,SRCURL=/UI5Testbox/;/tweetsApp/

## EHI web dispatcher wapper

wdisp/system_1 = SID=EXT, EXTSRV=https://vmw5441.wdf.sap.corp:44327, SRCSRV=*:8043,SRCURL=/sap/bc/;/sap/opu/odata/

## Local HANA box odata service

wdisp/system_2 = SID=EXT, EXTSRV=https://10.58.77.xxx:4300, SRCSRV=*:8043,SRCURL=/tmp/xsodata/

Thanks

Ethan

Accepted Solutions (1)

Accepted Solutions (1)

Former Member
0 Kudos

Hi Ethan,

Why would a connection to https://pvgn50819959a:8043//tmp/i076004/xsjs-svcs/logic/sysoverview.xsjs go to the wdisp/system_2 because the url prefix /tmp/xsodata? The url prefix /tmp/i076004/ does not match /tmp/xsodata so there is no match there. That could explain why it always picks the first system defined.

What happens if you try to open a page in one of the other paths?

kind regards,

Ted

former_member186273
Participant
0 Kudos

Hi Ted

Thanks for pointing it out, actually that's a typo.

I think I found the root cause but I'm not 100% certain. The previous profile setting is as followings which is using End-to-End SSL

icm/server_port_0 = PROT=HTTP,PORT=3080

icm/server_port_1 = PROT=ROUTER,PORT=8043

After I changed icm/server_port_1 to

icm/server_port_1 = PROT=HTTPS,PORT=8043

My web dispatcher start to select the right system by using url prefix.

Doesn't End-to-End SSL allow system selection? Why it always dispatch https request to the first one?

Thanks

Ethan

0 Kudos

Hi Ethan,

When using End-to-End-SSL, Web Dispatcher is just forwarding incoming requests without decrypting them. But this means that Web Dispatcher cannot see any request detail, such as the URL, headers, etc. and system selection based on such detail is therefore impossible.

The documentation for End-To-End-SSL lists System Selection with Multiple Systems under restrictions:

http://help.sap.com/saphelp_nw73/helpdata/en/48/99c388d7c46bb9e10000000a42189d/frameset.htm

Best regards,

Tobias

former_member186273
Participant
0 Kudos

Thanks Tobias and Ted very much.

Answers (1)

Answers (1)

former_member186273
Participant
0 Kudos

I know I could distinguish by different port, but that will violate cross region policy in my project. So I want to do url prefix system selection.

what kind of configuration can achieve it? why the web dispatcher select the first system even it doesn't match at all.

Thanks

Ethan

0 Kudos

Hello Ethan,

You gave all external systems the same SID EXT. This cannot work. Try using different ones, e.g. EX1, EX2, EX3, ...

You can always use the Web Admin UI (usually /sap/wdisp/admin) to check the configuration of your systems and also of the modification handler.

Best regards,

Tobias

former_member186273
Participant
0 Kudos

Hi Tobias

Thanks for your reply.

Before the posting the SID is different with 3 characters, and it didn't work either, and I don't think that's the problem since all the external service are based on web instead of message server.

Now my problem is no matter what, the http request alway distribute to the first system. And I don't know how to make it work properly.

Thanks

Ethan

0 Kudos

Hello Ethan,

You definitely need different SIDs as Web Dispatcher is treatring them internally as just another "SAP" system.

Another issue could be the use of SRCSRV which is the same for all the external systems. Since it is the same, you can simply remove it. Then you probably also do not need the conflict_resolution any longer, since the SRCURLs are unique. It's always better to keep the conflict_resolution to 0 (the default) as long as possible.

Finally, you could check your patch level. This feature was new in Web Dispatcher 7.20 and several issues were fixed with the first patch levels. Try to use a patch level as new as possible. What is yours?

If you continue to have issues, increase the trace level to 2 or 3, reproduce the issue, check the trace file dev_webdisp, and look for lines like these:

ICR: IcrFindTargetSystem(0000000002DCB800, '/irj' -> 0

HttpGetRouteTargetSystem: SID='EX2'

Best regards,

Tobias

former_member186273
Participant
0 Kudos

Hello Tobias

Below is my version info, I'm using patch level 315. Question is if I remove SRCSRV and wdisp/system_conflict_resolution. How can web dispatcher know how to dispatch the request? I'm lost here.

c:\webdispatcher>sapwebdisp.exe -v

SAP Web Dispatcher Version 7.20.0, multithreaded, Unicode, 64 BIT

kernel information

------------------

system name      =

kernel release   = 720

database library =

compiled on      = NT 5.2 3790 S x86 MS VC++ 14.00

compile time     = Sep 23 2012 20:08:03

update level     = 0

patch number     = 315

source id        = 0.318