Invoke 3rdparty webservice through XI as sender
Hi,
In our scenario, We need to invoke a 3rd party webservice through PI and then send the data to R/3 system. Once get the reponse from R/3 again we need to send back the response to 3rd party webservices. (synchro scenario)
Could you help me understand "how to invoke 3rd party webservice through PI as sender system and send the data to R/3 and send back the response from R/3 to 3rd party webservice"
Also please let me know if there any examples/links for the above scenario.
Thanks in Advance,
Regards,
Naga
Could you help me understand "how to invoke 3rd party webservice through PI as sender system and send the data to R/3
and send back the response from R/3 to 3rd party webservice"
Yours is a SOAP <> XI <> RFC/ PROXY sync scenario.
Also please let me know if there any examples/links for the above scenario.
Yes there would be references (wiki, blog, article) on SDN....just make a search.
Regards,
Abhishek.
Similar Messages
-
Problem invoking XI webservice through webdynpro
We have created a webservice on XI that calls the BAPI_COMPANYCODE_GETLIST on an R/3 4.6C system. We generated the WSDL using the Integration builder and corrected the URL to point to the webservice (rather than the wizard proposed URL).
We can call the webservice through XMLspy and other tools. But we are not able to use webdynpro to invoke the webservice. We uploaded the webservice on the web application server so we can get to it through a URL.
The problem is that when we use webdynpro and try to link it to a webservice, we can point to the URL which is for the WSDL we uploaded to the webserver. But there is no other field in webdynpro to specify the URL for the webservice endpoint. The endpoint is actually in the WSDL and it seems correct:
http://servername:50000/XISOAPAdapter/MessageServlet?channel=:BS_EXTERNALAPP:BAPI_COMPANYCODE_GETLIST_WEBSERVICE_SOAP_SENDER;version=3.0;Sender.Service=BS_EXTERNALAPP;Interface=http://xyz.com/xi_demo/BAPI_COMPANYCODE_GETLIST_OUTBOUND_SYNC_MI
Through XMLspy we can just point to the WSDL. And then we can just specify the username and password and it runs. But with webdynpro, we are not able to invoke it.
Any ideas what we can do?
Here is the WSDL below:
Thanks,
Jay
<?xml version="1.0" encoding="ISO-8859-1"?>
<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:rfc="urn:sap-com:document:sap:rfc:functions" xmlns:p1="http://xyz.com/xi/xi_demo" name="BAPI_COMPANYCODE_GETLIST_OUTBOUND_SYNC_MI" targetNamespace="http://xyz.com/xi/xi_demo">
<wsdl:types>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="urn:sap-com:document:sap:rfc:functions" targetNamespace="urn:sap-com:document:sap:rfc:functions">
<xsd:element name="BAPI_COMPANYCODE_GETLIST.Response">
<xsd:complexType>
<xsd:all>
<xsd:element name="RETURN" type="BAPIRETURN" minOccurs="0"/>
<xsd:element name="COMPANYCODE_LIST">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="item" type="BAPI0002_1" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:all>
</xsd:complexType>
</xsd:element>
<xsd:element name="BAPI_COMPANYCODE_GETLIST">
<xsd:complexType>
<xsd:all>
<xsd:element name="COMPANYCODE_LIST">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="item" type="BAPI0002_1" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:all>
</xsd:complexType>
</xsd:element>
<xsd:complexType name="BAPI0002_1">
<xsd:sequence>
<xsd:element name="COMP_CODE" minOccurs="0">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="4"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="COMP_NAME" minOccurs="0">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="25"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="BAPIRETURN">
<xsd:sequence>
<xsd:element name="TYPE" minOccurs="0">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="1"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="CODE" minOccurs="0">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="5"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="MESSAGE" minOccurs="0">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="220"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="LOG_NO" minOccurs="0">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="20"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="LOG_MSG_NO" minOccurs="0">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="6"/>
<xsd:pattern value="\d+"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="MESSAGE_V1" minOccurs="0">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="50"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="MESSAGE_V2" minOccurs="0">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="50"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="MESSAGE_V3" minOccurs="0">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="50"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="MESSAGE_V4" minOccurs="0">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="50"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
</wsdl:types>
<wsdl:message name="rfc.BAPI_COMPANYCODE_GETLIST.Input">
<wsdl:part name="parameters" element="rfc:BAPI_COMPANYCODE_GETLIST"/>
</wsdl:message>
<wsdl:message name="rfc.BAPI_COMPANYCODE_GETLIST.Output">
<wsdl:part name="parameters" element="rfc:BAPI_COMPANYCODE_GETLIST.Response"/>
</wsdl:message>
<wsdl:portType name="BAPI_COMPANYCODE_GETLIST_OUTBOUND_SYNC_MI">
<wsdl:operation name="BAPI_COMPANYCODE_GETLIST_OUTBOUND_SYNC_MI">
<wsdl:input message="p1:rfc.BAPI_COMPANYCODE_GETLIST.Input"/>
<wsdl:output message="p1:rfc.BAPI_COMPANYCODE_GETLIST.Output"/>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="BAPI_COMPANYCODE_GETLIST_OUTBOUND_SYNC_MIBinding" type="p1:BAPI_COMPANYCODE_GETLIST_OUTBOUND_SYNC_MI">
<soap:binding xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="BAPI_COMPANYCODE_GETLIST_OUTBOUND_SYNC_MI">
<soap:operation xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" soapAction="http://sap.com/xi/WebService/soap1.1"/>
<wsdl:input>
<soap:body use="literal" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="BAPI_COMPANYCODE_GETLIST_OUTBOUND_SYNC_MIService">
<wsdl:port name="BAPI_COMPANYCODE_GETLIST_OUTBOUND_SYNC_MIPort" binding="p1:BAPI_COMPANYCODE_GETLIST_OUTBOUND_SYNC_MIBinding">
<soap:address location="http://servername:50000/XISOAPAdapter/MessageServlet?channel=:BS_EXTERNALAPP:BAPI_COMPANYCODE_GETLIST_WEBSERVICE_SOAP_SENDER&version=3.0&Sender.Service=BS_EXTERNALAPP&Interface=http%3A%2F%2Fxyz.com%2Fxi%2Fxi_demo%5EBAPI_COMPANYCODE_GETLIST_OUTBOUND_SYNC_MI" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>When i try to make the call through Test Data service in Visual composer, i get the error: "Portal request failed (Could not execute Web service operation)". This happens regardless of whether we supply input values for Comp Code and Comp Name.
So Visual composer is reading the WSDL and showing the input parameters correctly. The link for the WSDL needs the same authentication user and pwd as the actual webservice invocation link which is in the WSDL.
So i am not sure why the call is failing because it works easily through XMLspy.
- Jay -
SAMLAssertionID error while invoking webservice through webservice proxy
I have created a web service proxy client using service WSDL deployed to weblogic standalone server as per the Fusion Dev guide [http://fmwdocs.us.oracle.com/doclibs/fmw/E10285_01/appslib7/web.1111/b31974/web_services.htm#CJADCDBG]. When i try to invoke the web service through the proxy i am seeing this error
Exception in thread "main" javax.xml.ws.soap.SOAPFaultException: Unable to add security token for identity, token uri =http://docs.oasis-open.org/wss/oasis-wss-saml-token-profile-1.0#SAMLAssertionID
at com.sun.xml.ws.fault.SOAP11Fault.getProtocolException(SOAP11Fault.java:197)
at com.sun.xml.ws.fault.SOAPFaultBuilder.createException(SOAPFaultBuilder.java:122)
at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:125)
at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:95)
at com.sun.xml.ws.client.sei.SEIStub.invoke(SEIStub.java:136)
at $Proxy42.findTerritoriesInPartition(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at weblogic.wsee.jaxws.spi.ClientInstanceInvocationHandler.invoke(ClientInstanceInvocationHandler.java:84)
at $Proxy43.findTerritoriesInPartition(Unknown Source)
at oracle.apps.sales.territoryMgmt.territories.serviceProxy.findTerritories.TerritoryServiceSoapHttpPortClient.main(TerritoryServiceSoapHttpPortClient.java:56)
Please suggest how i can get rid of this error.
I looked at the wsdl, i see that wss_saml_or_username_token_service_policy is added.
<wsp:Policy orawsp:provides="{http://docs.oasis-open.org/ns/opencsa/sca/200903}authentication, {http://docs.oasis-open.org/ns/opencsa/sca/200903}clientAuthentication, {http://docs.oasis-open.org/ns/opencsa/sca/200903}clientAuthentication.message" wsu:Id="wss_saml_or_username_token_service_policy">
Code in my proxy client:
public class TerritoryServiceSoapHttpPortClient
@WebServiceRef
private static TerritoryService_Service territoryService_Service;
private static final AddressingVersion WS_ADDR_VER = AddressingVersion.W3C;
public static void main(String [] args)
territoryService_Service = new TerritoryService_Service();
TerritoryService territoryService = territoryService_Service.getTerritoryServiceSoapHttpPort();
// Get the request context to set the outgoing addressing properties
WSBindingProvider wsbp = (WSBindingProvider)territoryService;
WSEndpointReference replyTo =
new WSEndpointReference("http://adc60059fems.us.oracle.com:6035/salesTerrMgmtTerritories/TerritoryService", WS_ADDR_VER);
String uuid = "uuid:" + UUID.randomUUID();
wsbp.setOutboundHeaders( new StringHeader(WS_ADDR_VER.messageIDTag, uuid), replyTo.createHeader(WS_ADDR_VER.replyToTag));
// Add your code to call the desired methods.
try{
wsbp.getRequestContext().put(WSBindingProvider.USERNAME_PROPERTY, "SALES_ADMIN");
wsbp.getRequestContext().put(WSBindingProvider.PASSWORD_PROPERTY, "Welcome1");
FindTerritoriesInPartition terr = new FindTerritoriesInPartition();
terr.setPartitionType("PRODUCTION");
terr.setTerritoryService(territory);
territoryService.findTerritoriesInPartition(terr);
catch(ServiceException se){
Thanks,
SekarHi Subramanyam,
There is a very simple way to invoke web service through code using ServiceFactory classes. See if you can access this link[http://fmwdocs.us.oracle.com/doclibs/fmw/E10285_01/appslib7/doc.1111/e10308/uc_adf_to_adf.htm#BDCEDDDC]. Looks like creating proxy through Jdev and writing client code using ServiceDelegateImpl is a very costly approach, it creates lot of files and it fails to invoke service when SAML is enabled in the server side.
If you could not access this link, follow these steps
1. In connections.xml
<Reference name="{http://xmlns.oracle.com/apps/sales/territoryMgmt/territories/territoryService/}TerritoryService" className="oracle.jbo.client.svc.Service" xmlns="">
<Factory className="oracle.jbo.client.svc.ServiceFactory"/>
<RefAddresses>
<StringRefAddr addrType="serviceInterfaceName">
<Contents>oracle.apps.sales.territoryMgmt.territories.territoryService.TerritoryService</Contents>
</StringRefAddr>
<StringRefAddr addrType="serviceEndpointProvider">
<Contents>ADFBC</Contents>
</StringRefAddr>
<StringRefAddr addrType="jndiName">
<Contents>TerritoryServiceBean#oracle.apps.sales.territoryMgmt.territories.territoryService.TerritoryService</Contents>
</StringRefAddr>
<StringRefAddr addrType="serviceSchemaName">
<Contents>TerritoryService.xsd</Contents>
</StringRefAddr>
<StringRefAddr addrType="serviceSchemaLocation">
<Contents>oracle/apps/sales/territoryMgmt/territories/territoryService/</Contents>
</StringRefAddr>
<StringRefAddr addrType="jndiFactoryInitial">
<Contents>weblogic.jndi.WLInitialContextFactory</Contents>
</StringRefAddr>
<StringRefAddr addrType="jndiProviderURL">
<Contents>t3://adc60108fems.us.oracle.com:6046</Contents>
</StringRefAddr>
<StringRefAddr addrType="jndiSecurityPrincipal">
<Contents>SALES_ADMIN</Contents>
</StringRefAddr>
<StringRefAddr addrType="jndiSecurityCredentials">
<Contents>Welcome1</Contents>
</StringRefAddr>
</RefAddresses>
</Reference>
2. Create a java file with a main method, sample code to invoke service
import commonj.sdo.helper.DataFactory;
import oracle.jbo.client.svc.ServiceFactory;
public static void territoryGet(){
String TERRITORY_SERVICE_NAME = "{http://xmlns.oracle.com/apps/sales/territoryMgmt/territories/territoryService/}TerritoryService";
TerritoryService terrService = (TerritoryService)ServiceFactory.getServiceProxy(TERRITORY_SERVICE_NAME);
DataFactory dataFactory = ServiceFactory.getDataFactory(terrService);
// Create Territory
Territory territory = (Territory)dataFactory.create(Territory.class);
territory.setTerritoryLevel(1L);
territory.setStatusCode("FINALIZED");
java.util.Date currentDate = new java.util.Date();
Calendar cal = Calendar.getInstance();
cal.setTime(currentDate);
territory.setEffectiveEndDate(new java.sql.Date(cal.getTimeInMillis()));
territory.setEffectiveStartDate(new java.sql.Date(cal.getTimeInMillis()));
List<Territory> lst = terrService.findTerritoriesInPartition(territory, "PRODUCTION");
System.out.println("Size: " + lst.size());
I also had succeeded using ServiceDeleteImpl, but i prefer ServiceFactory which is very simple. I can also share how to achieve using the proxy which jdev generates.
~Sekar -
Invoking webservice through bpel process
Hi, I created a webservice for a java code. I created a simple bpel process to invoke the webservice. Its throwing below error when running the bpel process. I tested the webservice alone. it works fine. Any help is highly apreciated.
Thanks, Ram....
when invoking locally the endpoint 'http://wtus081806-6:9700/Hrinfo-java_test_1-context-root/default', ; nested exception is: ORABPEL-05210 No BPEL archive files. The process domain cannot locate any BPEL archives for process "unknown". If you have deployed a process please check that it is located in the directory "C:\OraHome_1\integration\orabpel\domains\default\deploy".</summary>
</part>
<part name="detail">
<detail>ORABPEL-05210 No BPEL archive files. The process domain cannot locate any BPEL archives for process "unknown". If you have deployed a process please check that it is located in the directory "C:\OraHome_1\integration\orabpel\domains\default\deploy".</detail>
</part>I remember this being a bug in 10.1.2.0.2 - as somehow the servlet thinks the call would be for the bpel engine, instead of the webservice endpoint,
so I recommend 2 things .. don/t name the operation default
'http://wtus081806-6:9700/Hrinfo-java_test_1-context-root/default'
and if this does not help, try to set optSOAPShortcut -> false on the BPEL Domain .. -
Problem invoking XI webservice
We have created a webservice on XI that calls the BAPI_COMPANYCODE_GETLIST on an R/3 4.6C system. We generated the WSDL using the Integration builder and corrected the URL to point to the webservice (rather than the wizard proposed URL).
We can call the webservice through XMLspy and other tools. But we are not able to use webdynpro to invoke the webservice. We uploaded the webservice on the web application server so we can get to it through a URL.
The problem is that when we use webdynpro and try to link it to a webservice, we can point to the URL which is for the WSDL we uploaded to the webserver. But there is no other field in webdynpro to specify the URL for the webservice endpoint. The endpoint is actually in the WSDL and it seems correct:
http://servername:50000/XISOAPAdapter/MessageServlet?channel=:BS_EXTERNALAPP:BAPI_COMPANYCODE_GETLIST_WEBSERVICE_SOAP_SENDER;version=3.0;Sender.Service=BS_EXTERNALAPP;Interface=http://xyz.com/xi_demo/BAPI_COMPANYCODE_GETLIST_OUTBOUND_SYNC_MI
Through XMLspy we can just point to the WSDL. And then we can just specify the username and password and it runs. But with webdynpro, we are not able to invoke it.
Any ideas what we can do?
Here is the WSDL below:
Thanks,
Jay
<?xml version="1.0" encoding="ISO-8859-1"?>
<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:rfc="urn:sap-com:document:sap:rfc:functions" xmlns:p1="http://xyz.com/xi/xi_demo" name="BAPI_COMPANYCODE_GETLIST_OUTBOUND_SYNC_MI" targetNamespace="http://xyz.com/xi/xi_demo">
<wsdl:types>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="urn:sap-com:document:sap:rfc:functions" targetNamespace="urn:sap-com:document:sap:rfc:functions">
<xsd:element name="BAPI_COMPANYCODE_GETLIST.Response">
<xsd:complexType>
<xsd:all>
<xsd:element name="RETURN" type="BAPIRETURN" minOccurs="0"/>
<xsd:element name="COMPANYCODE_LIST">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="item" type="BAPI0002_1" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:all>
</xsd:complexType>
</xsd:element>
<xsd:element name="BAPI_COMPANYCODE_GETLIST">
<xsd:complexType>
<xsd:all>
<xsd:element name="COMPANYCODE_LIST">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="item" type="BAPI0002_1" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:all>
</xsd:complexType>
</xsd:element>
<xsd:complexType name="BAPI0002_1">
<xsd:sequence>
<xsd:element name="COMP_CODE" minOccurs="0">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="4"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="COMP_NAME" minOccurs="0">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="25"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="BAPIRETURN">
<xsd:sequence>
<xsd:element name="TYPE" minOccurs="0">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="1"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="CODE" minOccurs="0">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="5"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="MESSAGE" minOccurs="0">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="220"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="LOG_NO" minOccurs="0">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="20"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="LOG_MSG_NO" minOccurs="0">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="6"/>
<xsd:pattern value="\d+"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="MESSAGE_V1" minOccurs="0">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="50"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="MESSAGE_V2" minOccurs="0">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="50"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="MESSAGE_V3" minOccurs="0">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="50"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="MESSAGE_V4" minOccurs="0">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="50"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
</wsdl:types>
<wsdl:message name="rfc.BAPI_COMPANYCODE_GETLIST.Input">
<wsdl:part name="parameters" element="rfc:BAPI_COMPANYCODE_GETLIST"/>
</wsdl:message>
<wsdl:message name="rfc.BAPI_COMPANYCODE_GETLIST.Output">
<wsdl:part name="parameters" element="rfc:BAPI_COMPANYCODE_GETLIST.Response"/>
</wsdl:message>
<wsdl:portType name="BAPI_COMPANYCODE_GETLIST_OUTBOUND_SYNC_MI">
<wsdl:operation name="BAPI_COMPANYCODE_GETLIST_OUTBOUND_SYNC_MI">
<wsdl:input message="p1:rfc.BAPI_COMPANYCODE_GETLIST.Input"/>
<wsdl:output message="p1:rfc.BAPI_COMPANYCODE_GETLIST.Output"/>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="BAPI_COMPANYCODE_GETLIST_OUTBOUND_SYNC_MIBinding" type="p1:BAPI_COMPANYCODE_GETLIST_OUTBOUND_SYNC_MI">
<soap:binding xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="BAPI_COMPANYCODE_GETLIST_OUTBOUND_SYNC_MI">
<soap:operation xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" soapAction="http://sap.com/xi/WebService/soap1.1"/>
<wsdl:input>
<soap:body use="literal" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="BAPI_COMPANYCODE_GETLIST_OUTBOUND_SYNC_MIService">
<wsdl:port name="BAPI_COMPANYCODE_GETLIST_OUTBOUND_SYNC_MIPort" binding="p1:BAPI_COMPANYCODE_GETLIST_OUTBOUND_SYNC_MIBinding">
<soap:address location="http://servername:50000/XISOAPAdapter/MessageServlet?channel=:BS_EXTERNALAPP:BAPI_COMPANYCODE_GETLIST_WEBSERVICE_SOAP_SENDER&version=3.0&Sender.Service=BS_EXTERNALAPP&Interface=http%3A%2F%2Fxyz.com%2Fxi%2Fxi_demo%5EBAPI_COMPANYCODE_GETLIST_OUTBOUND_SYNC_MI" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>While generating a wsdl in XI the url provided should be as below:
Override the default URL with following while generating WSDL using web service wizard.
Default URL:
http://host:port/XISOAPAdapter/MessageServlet?channel=:<service>:<channel>
To import the WSDL in webdynpro,
In NWDS Create Model -> Import Web Service Model (referring the XI WSDL)
Instantiate the request object and pass the mandatory parameters for request object and call execute method.
Thanks and Regards,
Amar Bhagat Challa. -
Easier option for invoking external webservice
Hi,
what is the easy way to test invoking a nonSAP webservice (to which we give request and expect response).
i did file to soap scenario using bpm,
and i used file to soap using adapter module.
but both are bit lengthy procedure to check if we can invoke the webservice thru PI.
is there any other mechanism, or any other adapters that we can use to send the request and get the response from nonSAP webservice provider.hi,
>>>is there any other mechanism, or any other adapters that we can use to send the request and get the response from nonSAP webservice provider.
not anything that would not involve using adapters...
>>>but both are bit lengthy procedure to check if we can invoke the webservice thru PI.
but they both take less then 30 mins to develop & check (without a BPM even less)...
Regards,
Michal Krawczyk -
Webservice through an exception -- SAP XI namespace is missing in XML
Hello Experts,
we have a HTTP(synchron) --> XI --> SOAP (synchron) ---> XI --> HTTP Scenario.
A webapplicaton sends a number to XI. XI sends the number (integrationprocess) to a webservice an gets same information back. This information will be send back to the
webapplication.
In same cases the webservices through an exception (it's okay, depend on date).
But XI can't read this XML because one namespace is missing.
The webservice sends the XML correctly. We have tested it.
It seems inside XI one namespace of the XML will lost.
We can't see the reason for it.
An Application Fault Exception is thrown in XI
In the RWB we see this: SOAP: response message contains an error Application/UNKNOWN/APPLICATION_ERROR - application fault
The soap communication channel has an error.
We try to arise the severity of the tracelevel to see more information, but without success.
So we don't find any information for this error.
Do you know this problem?
Thanks in advance!
JürgenHi
for namespaing mssing see the below blogs
https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/01a57f0b-0501-0010-3ca9-d2ea3bb983c1
http://www.troobloo.com/tech/xslt.toc.shtml
http://www.w3schools.com/xsl/
http://www.w3.org/TR/xslt
http://help.sap.com/saphelp_nw04/helpdata/en/73/f61eea1741453eb8f794e150067930/frameset.htm
https://sdn.sap.com/irj/servlet/prt/portal/prtroot/com.sap.km.cm.docs/library/xi/xi-code-samples/generic%20xslt%20mapping%20in%20sap%20xi%2c%20part%20i.pdf
/people/anish.abraham2/blog/2005/12/22/file-to-multiple-idocs-xslt-mapping
Required XSLT Mapping tips!
Thnaks
sudhir sharma -
Unable to invoke ReadProject WebService on a HTTPS environment
Hi,
I have customized Ms Project Server 2010 to invoke PSI WebService in the checkin event handler.
The code works very well in a HTTP environment. However, it doesn't work in HTTPS environment. The following message is displayed on accessing the service in HTTPS environment
The server was unable
to process the request due to an internal error. For more information
about the error, either turn on IncludeExceptionDetailInFaults (either from
ServiceBehaviorAttribute or from the <serviceDebug> configuration
behavior) on the server in order to send the exception information back to the
client, or turn on tracing as per the Microsoft .NET Framework 3.0 SDK
documentation and inspect the server trace logs
I am unable to trace logs to find out the root cause of this issue. Any help in this regard will be appreciated.HTTP 401 means the server running on specified URL may have HTTP Basic Authentication enabled. Please cross-check whether this is the case and if yes then configure the same in composite. BTW, "01hw331924" seems to be a familiar host name. ;)
Regards,
Anuj -
Hi,
Can you please help me in understanding the concept of publishing thwe webservices through PI?
Also,please suggest me the blogs mentioning
Thanks in advanceSimple... If PI wants to consume webservices of third party, we dont publish the web service in the service registry. We simple create scenario using SOAP adaper (Receiver) and consume web service. In this case, we import WSDL of third party and use as receiver or target data structure. In configuration level, use soap adapter and specify the WSDL url and action in the comm channel.
If PI needs to host web service for others to consume then we basically use SOAP sender and create WSDL. Also in this case we publish the web service in the service registry. Hope that helps.
Have you seen this [link |http://www.riyaz.net/blog/pi-71-publishing-service-interface-as-a-webservice-in-sr/technology/sap/527/]for publishing the service interface in registry? -
How to invoke safari browser through code?
how to invoke safari browser through code?
Hi Sam,
Please check if the articles below can be help:
http://www.bizsupportonline.net/browserforms/programmatically-submit-infopath-form-sharepoint-send-email-close-form.htm
http://www.bizsupportonline.net/blog/2009/01/how-to-programmatically-run-code-close-infopath-web-form/
Regards,
Rebecca Tu
TechNet Community Support -
Regarding errors in client Application to invoke the webservices
hi,
i am using weblogic workshop to develop webservices on weblogic server8.1
i develop webservice and wsdl file also
but when i am writing dynamic client application to invoke the webservice( particular method)
then it gives error like this
javax.xml.rpc.JAXRPCException: failed to invoke operation 'requestContactList' due to an error in the soap layer (SAAJ); nested exception is: Message[ failed to serialize interface javax.xml.soap.SOAPElementweblogic.xml.schema.binding.SerializationException: mapping lookup failure. class=interface javax.xml.soap.SOAPElement class context=TypedClassContext{schemaType=['http://www.openuri.org/']:requestContactList}]StackTrace[
javax.xml.soap.SOAPException: failed to serialize interface javax.xml.soap.SOAPElementweblogic.xml.schema.binding.SerializationException: mapping lookup failure. class=interface javax.xml.soap.SOAPElement class context=TypedClassContext{schemaType=['http://www.openuri.org/']:requestContactList}
at weblogic.webservice.core.DefaultPart.invokeSerializer(DefaultPart.java:332)
at weblogic.webservice.core.DefaultPart.toXML(DefaultPart.java:297)
at weblogic.webservice.core.DefaultMessage.toXML(DefaultMessage.java:645)
at weblogic.webservice.core.ClientDispatcher.send(ClientDispatcher.java:206)
at weblogic.webservice.core.ClientDispatcher.dispatch(ClientDispatcher.java:143)
at weblogic.webservice.core.DefaultOperation.invoke(DefaultOperation.java:471)
at weblogic.webservice.core.DefaultOperation.invoke(DefaultOperation.java:457)
at weblogic.webservice.core.rpc.CallImpl.invoke(CallImpl.java:566)
at weblogic.webservice.core.rpc.CallImpl.invoke(CallImpl.java:419)
at test.Client.main(Client.java:57)
Caused by: weblogic.xml.schema.binding.SerializationException: mapping lookup failure. class=interface javax.xml.soap.SOAPElement class context=TypedClassContext{schemaType=['http://www.openuri.org/']:requestContactList}
at weblogic.xml.schema.binding.RuntimeUtils.lookup_serializer(RuntimeUtils.java:151)
at weblogic.xml.schema.binding.RuntimeUtils.invoke_serializer(RuntimeUtils.java:187)
at weblogic.xml.schema.binding.RuntimeUtils.invoke_serializer(RuntimeUtils.java:174)
at weblogic.webservice.core.DefaultPart.invokeSerializer(DefaultPart.java:328)
... 9 more
at weblogic.webservice.core.rpc.CallImpl.invoke(CallImpl.java:586)
at weblogic.webservice.core.rpc.CallImpl.invoke(CallImpl.java:419)
at test.Client.main(Client.java:57)
Debugging Finished
Exception in thread "main"
my client program is
import java.net.URL;
import javax.xml.rpc.ServiceFactory;
import javax.xml.rpc.Service;
import javax.xml.rpc.Call;
import javax.xml.rpc.ParameterMode;
import javax.xml.namespace.QName;
* This class demonstrates a java client invoking a WebService.
* @author Copyright (c) 2005 by BEA Systems, Inc. All Rights Reserved.
public class Client {
public static void main(String[] args) throws Exception {
// Setup the global JAXM message factory
System.setProperty("javax.xml.soap.MessageFactory",
"weblogic.webservice.core.soap.MessageFactoryImpl");
// Setup the global JAX-RPC service factory
System.setProperty( "javax.xml.rpc.ServiceFactory",
"weblogic.webservice.core.rpc.ServiceFactoryImpl");
// create service factory
ServiceFactory factory = ServiceFactory.newInstance();
// define qnames
String targetNamespace =
"http://www.openuri.org/"
+ "wsdl/http://192.168.2.98:7001/ContactListWeb/ContactListJWS/ContactTest.jws";
QName serviceName =
new QName(targetNamespace,
"ContactTest");
QName portName =
new QName(targetNamespace,
"ContactTestSoap");
QName operationName = new QName("targetNamespace",
"requestContactList");
URL wsdlLocation =
new URL("http://192.168.2.98:7001/ContactListWeb/ContactListJWS/ContactTest.jws?WSDL");
// create service
Service service = factory.createService(wsdlLocation, serviceName);
// create call
Call call = service.createCall(portName, operationName);
// invoke the remote web service
String result =(String)call.invoke(new Object[] {
"BEAS"
System.out.println("\n");
System.out.println("This example shows how to create a dynamic client application that invokes a non-WebLogic Web service.");
System.out.println("The webservice used was: http://services.xmethods.net/soap/urn:xmethods-delayed-quotes.wsdl");
System.out.println("The quote for BEAS is: ");
System.out.println(result);
}Hi I am also facing the issue. If any one got the solutoin for this please post it
Thanks
Kaal -
Error while consuming PLSQL Webservice through BPEL
HI ,
I have created a simple PLSQL Web service called "HelloWorld" and it got successfully deployed .
When I tried to test this webservice through BPEL Process Manager , its showing me error everytime that ( Could not create object of class 'dimple.HelloWorldWebServiceUser'; nested exception is: java.lang.ClassNotFoundException: dimple.HelloWorldWebServiceUser</summary> ) .
Please anyone help me out with this problem .
Thanks
Prashant DwivediHI ,
I have created a simple PLSQL Web service called "HelloWorld" and it got successfully deployed .
When I tried to test this webservice through BPEL Process Manager , its showing me error everytime that ( Could not create object of class 'dimple.HelloWorldWebServiceUser'; nested exception is: java.lang.ClassNotFoundException: dimple.HelloWorldWebServiceUser</summary> ) .
Please anyone help me out with this problem .
Thanks
Prashant Dwivedi -
Invoking a webservice from a servlet
Hi,
I am able to invoke a webservice using a Standalone java program. I am using the below command to invoke the web service.
java com.javasrc.webservices.age.AgeServiceClient -lhttp://localhost:8080/axis/services/AgeService "Siva" 33
Now if I write the whole code in a method I am not able to retreive the values into the servlet. Can any please suggest me how to invoke a web service from a servlet/JSP. Please tell if there any sites for this.
Here is my Client code:
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.apache.axis.encoding.XMLType;
import org.apache.axis.utils.Options;
import javax.xml.namespace.QName;
import javax.xml.rpc.ParameterMode;
public class AgeServiceClient
public static void main(String [] args)
try
Options options = new Options(args);
String endpointURL = options.getURL();
String name;
Integer age;
args = options.getRemainingArgs();
if ((args == null) || (args.length < 2))
name = "NoName";
age = new Integer( 0 );
else
name = args[ 0 ];
age = new Integer( args[ 1 ] );
Service service = new Service();
Call call = (Call) service.createCall();
call.setTargetEndpointAddress( new java.net.URL(endpointURL) );
call.setOperationName( new QName("http://age.webservices.javasrc.com", "age") );
call.addParameter( "arg1", XMLType.XSD_STRING,ParameterMode.IN);
call.addParameter( "arg2", XMLType.XSD_INT, ParameterMode.IN);
call.setReturnType( org.apache.axis.encoding.XMLType.XSD_STRING);
String ret = (String) call.invoke( new Object[]{name,age});
System.out.println("Age result : " + ret);
catch (Exception e)
System.err.println(e.toString());
Thanks in advance
PrashanthThis is very simple maybe you don't have servlet experience.
Simply you create a servlet and put your client main method in another one (not static method) + importing jar of your client and other associated jar files in WEB_INF\lib folder of servlet.
check for helloworld servlet then you can implement servlet for your client. -
Getting issue while invoking a webservice.
Hi All
when i invoke a webservice which is located remotley using httpclient post method. I am getting the following error
<faultcode>soapenv:Server.userException</faultcode>
<faultstring>org.xml.sax.SAXException: SimpleDeserializer encountered a child element, which is NOT expected, in something it was trying to deserialize.</faultstring>
Can anyone please help me out how to get out this exception. tried googling on this exception, but there is no luck.
import java.io.File;
import java.io.FileInputStream;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.methods.InputStreamRequestEntity;
import org.apache.commons.httpclient.methods.PostMethod;
public class PostXML {
public static void main(String[] args) throws Exception {
// Get target URL
String strURL = "http://localhost/services/CmdLineInterface?wsdl";
// Get file to be posted
String strXMLFilename = "C:\\post.xml";
File input = new File(strXMLFilename);
// Prepare HTTP post
PostMethod post = new PostMethod(strURL);
// Request content will be retrieved directly
// from the input stream
// Per default, the request content needs to be buffered
// in order to determine its length.
// Request body buffering can be avoided when
// content length is explicitly specified
post.setRequestEntity(new InputStreamRequestEntity(
new FileInputStream(input), input.length()));
// Specify content type and encoding
// If content encoding is not explicitly specified
// ISO-8859-1 is assumed
post.setRequestHeader(
"Content-type", "text/xml; charset=ISO-8859-1");
// post.set
post.setRequestHeader("SOAPAction", "");
// Get HTTP client
HttpClient httpclient = new HttpClient();
// Execute request
try {
int result = httpclient.executeMethod(post);
// Display status code
System.out.println("Response status code: " + result);
// Display response
System.out.println("Response body: ");
System.out.println(post.getResponseBodyAsString());
}catch(Exception e)
e.printStackTrace();
}finally {
// Release current connection to the connection pool
// once you are done
post.releaseConnection();
the above is the code i am using for calling the webservice.
Anyone can you please help me on this.
Regards
RakeshHi
Thank you very much for replying back..
Here is my WSDL file i am using
This XML file does not appear to have any style information associated with it. The document tree is shown below.
<wsdl:definitions xmlns:apachesoap="http://xml.apache.org/xml-soap" xmlns:impl="urn:test" xmlns:intf="urn:test" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="urn:test">
<!--
WSDL created by Apache Axis version: 1.4 Built on Apr 22, 2006 (06:55:48 PDT)
-->
<wsdl:types>
<schema xmlns="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="urn:test">
<element name="in0" type="xsd:string"/>
<element name="processCmdLineRequestReturn" type="xsd:string"/>
</schema>
</wsdl:types>
<wsdl:message name="processCmdLineRequestResponse">
<wsdl:part element="intf:processCmdLineRequestReturn" name="processCmdLineRequestReturn"/>
</wsdl:message>
<wsdl:message name="processCmdLineRequestRequest">
<wsdl:part element="intf:in0" name="in0"/>
</wsdl:message>
<wsdl:portType name="CmdLineInterface">
<wsdl:operation name="processCmdLineRequest" parameterOrder="in0">
<wsdl:input message="intf:processCmdLineRequestRequest" name="processCmdLineRequestRequest"/>
<wsdl:output message="intf:processCmdLineRequestResponse" name="processCmdLineRequestResponse"/>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="CmdLineInterfaceSoapBinding" type="intf:CmdLineInterface">
<wsdlsoap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="processCmdLineRequest">
<wsdlsoap:operation soapAction=""/>
<wsdl:input name="processCmdLineRequestRequest">
<wsdlsoap:body use="literal"/>
</wsdl:input>
<wsdl:output name="processCmdLineRequestResponse">
<wsdlsoap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="CmdLineInterfaceService">
<wsdl:port binding="intf:CmdLineInterfaceSoapBinding" name="CmdLineInterface">
<wsdlsoap:address location="http://localhost:8080/test/services/CmdLineInterface"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
Regards
Rakesh -
Invoking a webservice using WSIF Binding
Hi All,
I have few queries regarding usage of WSIF Binding in BPEL
My understanding was it is useful for calling Java Classes from BPEL Process.
Can I use WSIF Binding for invoking the webservice ?
Or the use of WSIF Binding is limited to invoking Java classes.
If we can invoke web service , Can you please let me know how to do it?
you can mail your replies to [email protected]
Any help will be immensely appreciated..
Regards,
BhanuFirst of all thanks to Jens and clemens.
From both of your replies, i learnt that we can call webservice from BPEL process using WSIF binding .
Can you provide me a bpel sample where we're using wsif binding for invoking web service?
I have one more doubt:
"WSIF java binding means, which was used to call java classes. WSIF soap binding used to call web services"
Is my understanding correct?
Can you explain a bit on WSIF Java binding?
Regards,
Bhanu
Maybe you are looking for
-
I recently bought a new Mac laptop. When I tried to erase all the songs on my iPod and sync it to my new library, 700 songs synced before the sync froze. I could still play songs on iTunes but no more songs would sync. It wouldn't let me stop the syn
-
High level & low level Desing in OBIEE
Hi Gurus/Experts, I am new to in OBIEE and please let me know about the High Level and Low level design of obiee projects. Really its helpful for me to develope my carrier skills. Thanks in advance, Sriram
-
Why can't I convert my PDF to a Word Document?
I've purchased the necessary/recommended software at 19.99 in order to convert this PDF document into a word document. The document is large--53.3MB, and yet the stated "limit is 100MB, so it should work. All of the computer software matches the "t
-
I have a late 2013 MBP with only 2 thunderbolt ports. I want to set up two external displays (both have usb ports on the back but not thunderbolt so I can't daisy-chain) but one of my thunderbolt ports is being taken up by the ethernet adapter. Is it
-
Russian Language Pack for ATT iPhone
How to install and where to download russian language pack for iPhone?