cancel
Showing results for 
Search instead for 
Did you mean: 

Inter-operability for the Web Service exposed by PI

Former Member
0 Kudos

Hi All,

I am trying to expose the Service Interface in PI to an external client and they are complianing that the WSDL shared is not WS-I compliant. Another issue is that the WSDL carries two ports - HTTP and HTTPS.

The error received in WS-I compliance report is as below:

***The conformance validation process failed.***
***Exception:org.wsi.WSIException***
***WSDLException (at /wsdl:definitions/wsdl:portType/wsdl:operation/wsp:Policy): faultCode=INVALID_WSDL: Encountered unexpected '{http://schemas.xmlsoap.org/ws/2004/09/policy}Policy'.***
***------------------------------------------------------------------------------***
  ***Nested exception is:***
 

  ***WSDLException (at /wsdl:definitions/wsdl:portType/wsdl:operation/wsp:Policy): faultCode=INVALID_WSDL: Encountered unexpected '{http://schemas.xmlsoap.org/ws/2004/09/policy}Policy'.:***
 

***	at org.wsi.test.profile.validator.impl.wsdl.WSDLValidatorImpl.validate(Unknown Source)***
***	at org.wsi.test.analyzer.BasicProfileAnalyzer.validateWSDL(Unknown Source)***
***	at org.wsi.test.analyzer.BasicProfileAnalyzer.validateConformance(Unknown Source)***
***	at org.wsi.test.analyzer.BasicProfileAnalyzer.main(Unknown Source)***

Further analysis shows that there is a tag <wsp:PolicyReference URI="#OP_SERVICEINTERFACENAME" />

in the WSDL which is the culprit..

My question here -

1. What can be done to ensure that the WSDL generated from Integration Builder carries only one port (HTTPS)

2. What are the options to make this WSDL WS-I compliant ?

Just to elaborate further, I have already tried the below options -

1. Updating the security profile in Service Interface creation as No.

2. Referring to the below blog /people/holger.stumm2/blog/2010/03/19/wsdl-wspolicy--what-is-it-und-how-can-i-get-rid-of-it-in-pi - However this was not helpful to me as the service interfaces in ESR are not showing up in SOAMANAGER. Am I missing something here ?

We are on SAP PI 7.1 EHP1.

Any pointers will be highly appreciated..

Thanks

Amit

Accepted Solutions (0)

Answers (1)

Answers (1)

baskar_gopalakrishnan2
Active Contributor
0 Kudos

>1. What can be done to ensure that the WSDL generated from Integration Builder carries only one port (HTTPS)

So simple. I believe you generate the WSDL using sender agreement. You can go and do it as follows conventional way...

Go to IB

Tools --> Display WSDL

Specify the URL of the web server (PLease note dont click propose URL)

Enter example as follows

https://hostname:50001/XISOAPAdapter/MessageServlet?channel=:BC_TEST:CC_TEST_FileName_SOAP_Sender

Where hostname enter pi name

50001 port (talk to basis if the port for https is different) default is 50001

BC_TEST - Business component or Business Service

CC_TEST_FileName_SOAP_Sender - sender comm channel

Hit continue

Next scrreen enter sender service interface name and its namespace

hit continue

Next screen enter

Business component, sender interface name and namespace

then save. Thats it.

Former Member
0 Kudos

Thanks Baskar, But I have already tried that out. The issue is that offline WSDL file not acceptable. I have to share the URL for the WSDL which they will call and download the WSDL from. Therefore I am looking for a way to disable creation of that port at the Service Interface level.

Thanks

Amit

baskar_gopalakrishnan2
Active Contributor
0 Kudos

Then another easy step.. After the client download advice them to remove <wsdl:port> tag that represents http. It creates one each for http and https.

Example:

<wsdl:port name="HTTP_Port" binding="p1:SI_S_O_TRI_TestBinding">
<soap:address location="http://test/XISOAPAdapter/MessageServlet?senderParty=&amp;senderService=BC_test&amp;receiverParty=&amp;receiverService=&amp;interface=SI_S_O_TRI_SynchronizeTask&amp;interfaceNamespace=http://test.com/TRI/SynchronizeTask" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"/>
</wsdl:port>
<wsdl:port name="HTTPS_Port" binding="p1:SI_S_O_TRI_TestBinding">
<soap:address location="https://test/XISOAPAdapter/MessageServlet?senderParty=&amp;senderService=BC_test&amp;receiverParty=&amp;receiverService=&amp;interface=SI_S_O_TRI_SynchronizeTask&amp;interfaceNamespace=http://test.com/TRI/SynchronizeTask" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"/>
</wsdl:port>

Regarding WS_I compliant, SAP supports Basic profile 1.0 Refer this [link|http://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/46d6c25d-0b01-0010-06a9-8e8218753c02?quicklink=index&overridelayout=true]

Former Member
0 Kudos

Again, sadly that is not the option. I want to make it clear that there is no room for offline alteration - whether it is done by me before sending the WSDL file or the client after downloading the WSDL file. Let me know if there is any configuration to control this on server itself...

former_member854360
Active Contributor
0 Kudos

Hi Amit,

If your PI system is configured for SSL and then you can disable the ICM HTTP service, leaving only HTTPS service on.

This will genarate only HTTPS port in your sender agreement WSDL.

But make sure everythinh in your PI system is configured to USE HTTPS. including SOAMANAGER

If your SOAMANAGER does not open with https port then add a record into table HTTPURLLOC specifying protocol HTTPS, FQDN, and port .

regards,

Debashish

baskar_gopalakrishnan2
Active Contributor
0 Kudos

>But make sure everythinh in your PI system is configured to USE HTTPS. including SOAMANAGER

Dont know how feasible it is.. If you could use HTTPS protocol alone for all your communications then you can disable http. That will solve your issue.

Former Member
0 Kudos

Thanks Debashish. So it makes more or less evident that there is no way to make PI generate only one port in the WSDL at the Service Interface Level.

Nw coming to the other question -

2. Referring to the below blog /people/holger.stumm2/blog/2010/03/19/wsdl-wspolicy--what-is-it-und-how-can-i-get-rid-of-it-in-pi - However this was not helpful to me as the service interfaces in ESR are not showing up in SOAMANAGER. Am I missing something here ? Can anybody advice on the steps to make the service interfaces in ESR appear in the SOAMANAGER page.. ?

Thanks

Amit

former_member854360
Active Contributor
0 Kudos

Hi Amit,

Is this a Proxy scenarion?

If it is a Proxy then open the transaction SOAMANGER (in application system Means ECC system not PI) go to Web Service adminstration and serach for your Proxy. Oncle you find that select it and click on "Apply Selection" there after you will see the option for creating the Service Name. Along with creating End Point there.

After doing all these you will be able to see the WSDL for your created WebService (proxy exposed as a Web service). Now to test it you have to give the Ip address and Pord with credential of PI server in the Admion setting of application server. Once you click to test that service it will take you to test page of Web Service Navigater of PI and you can test it there.

Former Member
0 Kudos

Hi Debashish, All,

This is not a proxy scenario and no ECC system is involved. I am simply trying to expose a Service Interface as a web service to external client. All other steps are known to me ( SOAMANAGER, endpoint definition), the only trouble is that I do not see the service interface I created when I open the SOA manager and try to search there..

Thanks

Amit

former_member854360
Active Contributor
0 Kudos

Hi Amit,

Could you please check SAP Note Number: 1412081 which talks about correction for not getting expected results when Searching with 'BOTH' in SOAMANAGER for Service Groups.

regards,

Debashish

Former Member
0 Kudos

hI Debashish ,

The note is not useful for us as we have a different release and SP. And there is nothing wrong with SOAMANAGER transaction itself.. I am able to search the Services which are pre-loaded by sAP. I am just not able to search the services I created..

Thanks

Amit

former_member472138
Active Contributor
0 Kudos

It should be there, you need to search wisely, it happens for every one ofcoz.Its my experience.

Regards

pothana

Former Member
0 Kudos

That's what I want to know.. What should be changed on the server so that it starts showing up in SOAMANAGER the services from ESR ? In my case, it is not showing up ( Based on my experience in the current event )

Edited by: Amit Dingorkar on Jul 18, 2011 3:02 PM

Former Member
0 Kudos

Hi Amit,

I have to share the URL for the WSDL which they will call and download the WSDL from

You can right click on sender agreement --> display wsdl --> and then just give the wsdl url. They can download the wsdl from that url. I hope that is what you are looking for.

Regards,

---Satish

Former Member
0 Kudos

Hi Satish,

I already know the steps you suggested.. I would suggest you go through the thread once again to understand the problem I am facing..

Thanks

Amit