Exposing XI webservice to internet

Hello,
I'm working on a scenario where our XI webservice has to be exposed to the internet. We have a DMZ server (Windows with IIS). I though reverse proxy might be a good way to go, but I just read that IISProxy is not supported by SAP.
How can the IIS on DMZ box forward SOAP requests to XI (which sits on our internal network)? Do we have to install a SAP Web dispatcher for this to work?
Is there any other way to do this?
I'm looking for some guidance on this. Please share your ideas.
Thanks
Karthik

I guess..web dispatcher seems to be a common process. FYI - we do not have any SAP components installed in the DMZ. We though it would be easier just to redirect the webservice calls to internal XI webservice.
But, reverse proxy on IIS using IISproxy.dll is not supported by SAP anymore(Note : 886214). So either I have to use a webdispatcher or use a third party proxy provider to achieve this?
Can somebody confirm that these are the only options?
Thanks
Karthik

Similar Messages

  • Exposing a webservice on ECC 5.0 in a load balancing setup

    Hi
       We have a webservice exposed on ECC 5.0 that is being invoked by an external system. When we move this webservice to our production environment - which is load balanced and has a logon group setup - we need to be able to expose this webservice - not on a single application server - but be available on the logon group ( message server ) so that the url that we provide for the webservice to the external system does not contain  a single application server - but points to the logon group. We do not have a web dispatcher in our environment/architecture.
    How do we go about exposing this point-to-point webservice on ECC 5.0 in a load balanced setup ? Any suggestions, experiences that can be shared ?

    This  can be done though SICF.
    If you click on a service, their is a service data tab.
    underthat tab is a Load Balancing option.
    This then points the service at the SMLG logon group.
    Regards
    James

  • Probelm while connecting from PI server to BAPI (exposed as webservice)

    hi friends
    i exposed BAPI as webservice in R/3 system .
    when i am trying to test from tcode wsadmin with
    "http://10.136.148.36:8002/wsnavigator/jsps/explorer.jsp?description=WebServiceZZBAPI_USER_GET_DETAIL&name=ZZBAPI_USER_GET_DETAIL&wsdl=http%3A%2F%2Finst50053318.BLR4.SAP.CORP%3A8002%2Fsap%2Fbc%2Fsrt%2Frfc%2Fsap%2FZZBAPI_USER_GET_DETAIL%3Fsap-client%3D001%26wsdl%3D1.1"
    its giving reponse when i test it.
    if directly opens with Internet Explorer through the following link
    "http://inst50053318.blr4.sap.corp:8002/sap/bc/srt/rfc/sap/ZZBAPI_USER_GET_DETAIL?sap-client=001" its showing HTTP 500 - Internal server error in R/3 system.
    in PI SERVER  i am trying to call this webservice using SOAP adapter with scenario HTTP->SOAP.
    i configured the soap adapter using URL "http://inst50053318.blr4.sap.corp:8002/sap/bc/srt/rfc/sap/ZZBAPI_USER_GET_DETAIL?sap-client=001&wsdl=1.1".
    nw its giving the respose like " HTTP 500 TIMED OUT ERROR" as wellas showing Application server error".
    please suggest me with ur valuable inputs
    thanks & regards
    Ravi

    HI,
    Have u maintained the 4 RFC destination and run the SLDCHECK transaction on XI.
    DO let me know the result of SLDCHECK.
    AI_RUNTIME_JCOSERVER
    Points from the Integration Server to the mapping runtime. The program ID corresponds to the entry under JCo RFC provider for the J2EE Engine (used for the mapping runtime, value mapping, and the exchange profile).
    AI_DIRECTORY_JCOSERVER
    Points from the Integration Server to the Integration Builder. The program ID corresponds to the entry under JCo RFC provider for the J2EE Engine (used to refresh the runtime cache).
    LCRSAPRFC
    The RFC destination LCRSAPRFC is required for the connection to the System Landscape Directory (SLD). It is used to read the exchange profile.
    SAPSLDAPI
    The RFC destination SAPSLDAPI is required for the connection to the SLD. It is used by the ABAP API.
    INTEGRATION_DIRECTORY_HMI
    For Cache Updates
    Ur HTTP time out problem is repsolved or still u r facing it.
    Thnx
    Chirag

  • How to create business functions and expose as webservice?

    Hi...
      How to use Java to create business functions and expose that as a webservice.

    Hi Leela,
    Can you please post the answer to the question posed?
    We are also looking for a similar implementation in our integration and would really appreciate any help.
    Regards

  • Deployment Issue with MDM Java API exposed as Webservice using EJBS

    Hi Experts,
    I am implementing MDM Java APIS in Stateless session bean.Exposed that bean as Webservice and using that webservice in
    Webdynpro through Adaptive Webservice Model.
    I am facing following issue:
    Webservice works fine after deployment,after some number of execution webservice stops working and gives exception.After
    Redeployment of the Webservice, it starts working again works fine some number of execution.
    I am Using new MDMJava API.
    MDM Server Details: MDM 5.5 SP06
    I am using following code for connetion
    //////////////*************Getting Connection************///////
              ConnectionPool pool = null;
              String sessionId = null;
              try {
                   pool = ConnectionPoolFactory.getInstance("Server Ip");
              } catch (ConnectionException e1) {
                   System.out.println(e1.getMessage());
    //////////////*************Repository Session************///////
    CreateRepositorySessionCommand repSeession =
                   new CreateRepositorySessionCommand(p_pool);
              repSeession.setRepositoryIdentifier(p_repId);
              try {
                   repSeession.execute();
              } catch (CommandException e2) {
                   System.out.println(e2.getMessage().toString());
              String repIID = repSeession.getRepositorySession();
              //     Authenticate Repository
              AuthenticateRepositorySessionCommand autRepSeesion =
                   new AuthenticateRepositorySessionCommand(p_pool);
              try {
                   autRepSeesion.setSession(repSeession.getRepositorySession());
                   autRepSeesion.setUserName(p_user);
                   autRepSeesion.setUserPassword(p_Password);
                   autRepSeesion.execute();
              } catch (CommandException e3) {
                   System.out.println(
                        "RepSession Seesion" + e3.getMessage().toString());
              return autRepSeesion.getSession();
    //////////////*************user Session************///////
    GetRepositoryRegionListCommand regionListCommand =
                   new GetRepositoryRegionListCommand(p_pool);
              regionListCommand.setRepositoryIdentifier(p_repId);
              try {
                   regionListCommand.execute();
              } catch (CommandException e) {
                   System.out.println(e.getMessage().toString());
              RegionProperties[] regions = regionListCommand.getRegions();
              //                                 create a user session
              CreateUserSessionCommand UsersessionCommand =
                   new CreateUserSessionCommand(p_pool);
              UsersessionCommand.setRepositoryIdentifier(p_repId);
              UsersessionCommand.setDataRegion(regions[0]);
              // use the first region
              try {
                   UsersessionCommand.execute();
              } catch (CommandException e) {
                   System.out.println("UserSession" + e.getMessage().toString());
              String UsersessionId2 = UsersessionCommand.getUserSession();
    AuthenticateUserSessionCommand authUserCommand =
                   new AuthenticateUserSessionCommand(p_pool);
              authUserCommand.setSession(UsersessionCommand.getUserSession());
              authUserCommand.setUserName(p_userId);
              authUserCommand.setUserPassword(p_password);
              try {
                   authUserCommand.execute();
              } catch (CommandException e) {
                   System.out.println("User Seesion" + e.getMessage().toString());
              return authUserCommand.getSession();
    //////////////*************Destroy Session************///////
         DestroySessionCommand destroySessionCommand =
                   new DestroySessionCommand(p_pool);
              destroySessionCommand.setSession(p_repsession);
              try {
                   destroySessionCommand.execute();
              } catch (CommandException e) {
                   e.printStackTrace();
              destroySessionCommand.setSession(p_Uesrsession);
                   try {
                        destroySessionCommand.execute();
                   } catch (CommandException e) {
                        e.printStackTrace();
    Do we need to relase the connection pool object also?
    Can anyone help me with the code how that can be achived?
    Please Reply if anyone has come accross similar issue or know what can be the solution.
    Thanks in Advance.
    Regards Shruti
    Edited by: Shruti Shah on Dec 18, 2008 12:52 PM

    Hi Nitin,
    Thanks for the prompt Response.
    Even I am guessing that its becose of Connection pool.
    I am destroying session as follows
                   DestroySessionCommand destroySessionCommand =
                   new DestroySessionCommand(p_pool);
              destroySessionCommand.setSession(p_repsession);
              try {
                   destroySessionCommand.execute();
              } catch (CommandException e) {
                   e.printStackTrace();
              destroySessionCommand.setSession(p_Uesrsession);
                   try {
                        destroySessionCommand.execute();
                   } catch (CommandException e) {
                        e.printStackTrace();
    But I didnot find any method by which i can close realsse connection from connection pool.
    It would be great if you can help me how close or realese those connection.In MDM Console i am able to see those sessions even after destroying them.
    Regards Shruti.

  • Problem in Sessionbean exposed as webservice

    Hello Gurus,
    I have developed a session bean and exposed it as a webservice when I try to execute webservice from webservice navigator it runs fine, so there is no problem with webservice.
    Then I have created a Adaptive webservice model for that webservie and try to execute it but it gives below error
    Exception on execution of web service with WSDL URL '<WSDL URL>' with operation 'addNewExam' in interface 'ManageExamVi_Document'
    I think this is because I have not set the Username / password to execute the webservice but I don't know how to set it.
    in depricated webservice model there were methods available for setting username password for webservice execution but nothing likewise is available new Adaptive websrvice model, but I am not sure the problem there or some where else.
    Please tell me how can I solve this error.
    Thanks

    Hi Saleem,
    Thanks a lot for your message I have added the Username password as you suggested but still it gives same problem. below are the error message and cause.
    e.getCause()
    java.lang.reflect.InvocationTargetException: Cannot find the required parameter [name] in request message content.
    e.getMessage()
    Exception on execution of web service with WSDL URL '<WSDL URL>' with operation 'addNewExam' in interface 'ManageExamVi_Document'
    I am getting more confused now because getCause is saying that name parameter is not set properly but I have set it properly till the model attribute but still it is giving problem.
    I don't have any clue now to solve this issue, please help me.
    Thanks

  • Technical Issue while Exposing WebCenter webservices to SOA

    Hi All,
    The problem definition is as of below:
    We have two teams working separately on SOA and one on WebCenter.
    Scenario:
    1.     SOA gives a WSDL, WebCenter creates proxy jar which contain the xsds in a specific structure
    2.     WebCenter uses the classes in the proxy jar to construct a method “public soaObject methodName(soaObject)” and then exposes this as a Webservice to SOA.
    Problem:
    1.     WebCenter exposes webservices by using Java1.5 annotations – meaning, there are no xsds, wsdls or any other configuration file written or generated at build time
    2.     When deploying the application, the wsdls-xsds are auto generated by the Weblogic server. The xsds of the input and output objects are now different from the original SOA object xsds. The difference is little but because of this, SOA is not able to use the WC webservice.
    The problem in a nutshell is: The XSD from SOA WSDL and the weblogic generated XSD provided back to SOA at the time of Webcenter service exposure do not match,despite being the same XSD's.
    Kindly suggest!

    Admin password must contain at least one digit

  • Return arguments from a process exposed as webservice

    Hi!
    I'm exposing a process as a web services, the activity exposed is a Wait activity. After the web service is called a variable that I'm using for a caducity transition is being updated, when the caducity transition is excecuted, the instance arrives to the end.
    I tried to call the same web service after the instance had arrived to the end, it returns a message like when the web service were excecuted succesfully, but looking at the logs I found a warning log that says that the instance cannot be interrupted because it was cancelled o finished. The question is:
    How can I return that message to the user? How should I handle exceptions of processes exposed as web services?
    A second question is: How can I return a custom answer to the web service client... for example a custom id, or a value of a variable updated after the web services is called?
    Thanks!
    Ana

    Hi,
    Know how feel. I struggle sometimes getting this working too.
    Finally, I created a little document that reminds me how to expose things as a web service for all the various releases you might run into for PAPI-WS, WAPI, etc.:
    For 10g and 6.0 Studio:
    - http://{MachineName}:9000/albpmServices/{Projectname}/ws/{Processname}ServiceListener?wsdl
    For 10g and 6.0 Enterprise using WebLogic go to:
    http://{MachineName}:7001/albpmServices/{Engine-name}/ws
    For 5.7 Studio, enter the URL:
    - http://{MachineName}:{WorkspacePortNumber}/workspace/webservices/ProcessService?WSDL
    For 5.7 Enterprise, enter the URL:
    - http://{MachineName}:{WorkspacePortNumber}/portal/webservices/ProcessService?WSDL
    For 5.5 Studio, enter the URL:
    - http://{MachineName}:{WorkspacePortNumber}/{projectname}/webservices/ProcessService?WSDL
    Hope this helps,
    Dan

  • New portal serivce expose as webservice

    Hi
    I have created one custom portal service able to deploy successfully. But i have seen in one of the documentation that, the deployed portal service will be to see in the portal in the followin path.
    SystemAdministrator-> SystemConfiguration -> Application.
    But i was not able to see my deployed custome portal service in the following path.
    To test that service i have deployed one test Portal component and tested it is working fine.
    1 ) Where i can find my deployed custom service in portal?
    Next
    Now After i have created the custom portal service . I want expose that custom service as webservice.
    So I have create portal component in the nwds using ->
    PortalApplicationObject -> Portalwebserivce-> portalwebservicefromPortalservice ->
    Here i am able to browse InterfacePAth on click on next . I am getting the following error
    Compile your files properly.
    But i was able access the same service from the test component.
    When i am creating the another application to expose it as webserice i am getting the above error. But in the next i have tried with doing any changes on any component it is working fine. Like able to see the methods on click of next after given the inteface.
    Anydocument available to please forward it tome
    Can any body tell me what is the reason for this?
    Regards
    Vijay

    Hi sailash,
    Thanks for the reply,
    I have exposed the custom  portal service as webservice and deployed in the server.
    What is the procedure for accessing that service as webservice. when i exposed the above custome service as webservice i have got three .wsdl files in the respective directory.
    C:\SAP\MyCustomPortalServiceApp\dist\PORTAL-INF\
    MyCustomService_DOC_LIT.wsdl
    MyCustomService_RPC_ENC.wsdl
    MyCustomService_RPC_LIT.wsdl
    Why it has created three .wsdl files . where i need to use each this.
    Provide the steps for accessing the this service as webservice
    Regards
    Vijay

  • Sending Email from EJB exposed as Webservice

    Hi,
    I have created a EJB, which i have wrapped in an EAR & exposed as a WebService.
    <b>I want the code to send an email from the EJB</b>
    I know there is a code to send email, but that code is to send an email from WebDynpro. I am not sure if that will work with the EJB.
    Any ideas??
    Regards,
    Hanoz

    Hi,
    Thanx for the prompt response.
    I went through that blog. Its good, but it requires me to install additional plugins, which is dont want to do.
    Here is the code to send email from WebDynpro:
    String l_str_to = "<destination email id>";
                   String l_str_from = "sender";
                   String p_subject = "U've got mail!!! ";
    //               String p_l_request_id = "1" ;
                   // SUBSTITUTE YOUR ISP'S MAIL SERVER HERE!!!
                   String host = "<SMTP SERver ip>";
                   // Create properties, get Session
                   Properties props = new Properties();
                   // If using static Transport.send(),
                   // need to specify which host to send it to
                   props.setProperty("mail.smtp.host", host);
                   // To see what is going on behind the scene
                   //props.put("mail.debug", "true");
                   Session session = Session.getInstance(props);
                   try {
                        // Instantiatee a message
                        Message msg = new MimeMessage(session);
                        //Set message attributes
                             msg.setFrom(new InternetAddress(l_str_from));
                             InternetAddress[] address = { new InternetAddress(l_str_to)};
                             msg.setRecipients(Message.RecipientType.TO, address);
                             msg.setSubject(p_subject);
                             //msg.setSentDate(new Date());
                        java.util.Date dt = new java.util.Date();
                        msg.setSentDate(dt);
                        // Set message content
                        msg.setText("This is a test email");                         
                        //Send the message
                        Transport.send(msg);
                   catch (Exception mex)
                        // Prints all nested (chained) exceptions as well
                        mex.printStackTrace();
    <b>i want a similar code, which can be executed from the EJB!!!!</b>

  • Exposing OIM functionality for internet users

    We have a plan to upgrade IAM components to 11g release and leverage some of the functionality/service of OIM like self service and delegated admin for external users through internet. It is a obvious security concern to expose the OIM app as such to the internet users to achieve the same. And I believe our requirement is sure not one-off case.
    Considering this, few queries to all the experts
    1. What should be the ideal approach to achieve this?
    2. Any recommended architectural docs/links/discussion thread for similar requirements and solutions?
    3. I can think of one approach to achieve this would be to build an app integrating same with OIM using APIs.
    Regards,
    bkalita

    Hi Kevin,
    you NEED to work with the UME action Manage_My_Profile in order to enable user to view and modify their profile.
    Any user with a role that has this UME Action can do the above. You assign UME actions to portal roles in the portal in the PCD Studio. Here a short description:
    1. Go to Content Administration -> Portal Content
    2. Change the super_admin_role for example by navigating to Portal Content -> Portal Administrators -> Super Administrators -> Super Administration
    3. On the right pane switch the Property Category to "User Management Permissions"
    4. Look for Manage_My_Profile and set it to "Yes"
    5. Save the role and check your profile again
    Hope this helps,
    Robert
    PS: Unfortunately there is no possibility to only view the user attributes, yet. This should be possible with the UME action Read_My_Profile introduced with NW2004s.
    Only by integrating the LDAP read-only you would be able on other releases to achieve the same.

  • Exposing BI CMC over internet for BO Mobile

    Dear All,
    I need to setup BO Mobile 4.1 SP2 and use dashboard reporting over iphone,ipad etc
    We are planning to have different hardware for mobile server.
    Below are the few queries I had with the BO Mobile team.
    1) Planning to use HTTPS for mobile and use tomcat as reverse proxy(HTTPS enabled).
    Tomcat would also be from same server. I would be following the notes 1299147. Planning to get certificates singed by CA.
    a) Please let me know if any additional configurations need to be followed.
    b) Command line for generating key,csr and importing certificates.(In the above note only self signed certificate information is given)
    2) HTTPS for BI would be enabled (as per the above note)
    3) Should the CMS (BI) server also exposed over the network with public IP address?
    Because in the mobile handset configuration I need to give the IP or host name of CMS server.
    Please help with relevant info.
    Thanks & Regards,
    SKumar

    HI S kumar,
    Lets take one step at a time!
    First things first!
    check with your network team for reverse proxy settings and firewall.
    The BI server need not be exposed to internet. Proxy can be used for that.
    your application server will route all request coming from your mobile device to the BI Server. So reverse proxy will work for that.
    HTTPS needs to be configured on the tomcat server. Also, CA certs need to be signed.
    once they are signed. Simply tell your admin to mail them to you.
    Acces your mails on your ipad or iphone.
    Download the certificate. It will prompt you to be installed.
    These steps are mentioned in the admin guide available at help.sap.com
    Regards,
    atul B

  • Exposing same webservices through different ports

    I want to expose the same web services enclosed in EAR files through different port numbers.
    I have tried doing the same by configuring managed server as well as cluster but not able to invoke the services using different port numbers.
    I am using Weblogic server 8.1 sp4 and I have evaluation version of the server.
    Can I do this?
    If yes how?
    Thanks,
    Nitin

    With that combination of requirements, you might consider the following elements:
    Two managed servers, each having their own port (of course). The EAR would be deployed to each server, but you would only activate one of the web modules on each server. This could be controlled with a WLST script, or even a separate application whose only purpose is to prepare or unprepare each web module in the main application (there's an API for this).

  • Access Remote Webservice via Internet

    Hi all,
    Iam new to Web Services ...
    Could any of u give me an Article or Code ... how could we access a basic webservice from Java ..... which is available remotly.
    plz help me .. tks in advance...

    abp_JavaPrg@mdu wrote:
    I got the same error while I trying to connect the server in that port via ssh.I know ssh is "the new telnet", but I did not say telnet to be retro. ssh does encryption stuff, telnet does not. For checking that a port is open and (if the server sends at least the handshake in a human readable format) checking that the server you think is running is running telnet is a better option.
    From the sounds of it the application you think is running is not running.

  • SOAP Sender exposed to public internet

    How can I expose a webservice via the SOAP sender adapter to the public internet without exposing my entire XI server?   
    The default URL for a SOAP sender adapter is http://server:port/XISOAPAdapter/MessageServlet?channel=p:s:c&version...
    I do not want my server name and port known to the public.  I would like to use an alias for the soap adapter.
    I could use a reverse proxy to map an external hostname to our internal server (like http://www.external.host.com to http://server, then I could use http://www.external.host.com/XISOAPAdapter/MessageServlet?channel...), but this would expose the entire XI server as I could access the administration interface via http://www.external.host.com/nwa). 
    How can I expose just the interfaces available through the SOAP adapter without exposing the entire XI server?   I know everything is protected by username and password, but we require an additional layer of security.  Is it possible to create a virtual host or something similar for just the SOAP adapter?

    Hi Matt !
    Using a proxy you don't need to map everything. You could filter which URLs to forward and which not, to only allow /XISOAPADAPTER....URLs. Also remember to state the user in the Sender Agreement to only allow specified users to log in an use the service.
    Regards,
    Matias.

Maybe you are looking for