Soap Router versus Web Service Servlet

Hello:
I am trying to understand the fundamental difference between a SOAP Router versus
Web Service Servlet?. In websphere there is a concept called WSG(Web Service
Gateway) on which we can configure an handler to intercept the incoming soap requests.
But in weblogic I do not think we can configure any handler on Web Service Servlet.
So I think for this very purpose you have this soap router right ?. If this is
correct then does the soap router will forward the call to the Web Service Servlet
which implements the soap engine.
Please clarify,
Thanks,
Vijay

Hello,
Right, today there is not a global handler that can be configured;
however you can do servlet filter or check out an early access SOAP
Router[1] from Manoj.
Could you give us a snapshot of your use case?
Thanks,
Bruce
[1]
http://manojc.com/?router/readme.html
Vijay Cherukumudi wrote:
>
Hello:
I am trying to understand the fundamental difference between a SOAP Router versus
Web Service Servlet?. In websphere there is a concept called WSG(Web Service
Gateway) on which we can configure an handler to intercept the incoming soap requests.
But in weblogic I do not think we can configure any handler on Web Service Servlet.
So I think for this very purpose you have this soap router right ?. If this is
correct then does the soap router will forward the call to the Web Service Servlet
which implements the soap engine.
Please clarify,
Thanks,
Vijay

Similar Messages

  • OWSM 10.1.3.4 and Non-SOAP XML-based web service

    Hi all,
    According to the OWSM 10.1.3.4 Administrator's Guide, "all Web services registered with an Oracle WSM Gateway are virtualized as both a SOAP and non-SOAP Web service." To access the non-SOAP (XML-only) web service, the documentation states "The non-SOAP virtualized URL can be determined from the virtualized SOAP URL by replacing the services keyword in the URL with the xml keyword."
    For example, if the SOAP virtualized endpoint is:
    http://host:port/gateway/services/SID0003001
    then, the non-SOAP XML service endpoint is:
    http://host:port/gateway/xml/SID0003001
    I have several web services registered with an OWSM gateway, running on SOA Suite 10.1.3.4, and can access those without any problem. However, when I attempt to access the "/gateway/xml" version of these services, I simply get an HTTP 200 response header with a null body.
    Does anyone have any ideas what could be causing this or what the secret is to get the non-SOAP XML service feature of OWSM to work?
    Thanks!
    --Gary                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       

    Hi all,
    According to the OWSM 10.1.3.4 Administrator's Guide, "all Web services registered with an Oracle WSM Gateway are virtualized as both a SOAP and non-SOAP Web service." To access the non-SOAP (XML-only) web service, the documentation states "The non-SOAP virtualized URL can be determined from the virtualized SOAP URL by replacing the services keyword in the URL with the xml keyword."
    For example, if the SOAP virtualized endpoint is:
    http://host:port/gateway/services/SID0003001
    then, the non-SOAP XML service endpoint is:
    http://host:port/gateway/xml/SID0003001
    I have several web services registered with an OWSM gateway, running on SOA Suite 10.1.3.4, and can access those without any problem. However, when I attempt to access the "/gateway/xml" version of these services, I simply get an HTTP 200 response header with a null body.
    Does anyone have any ideas what could be causing this or what the secret is to get the non-SOAP XML service feature of OWSM to work?
    Thanks!
    --Gary                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       

  • Ignoring Http basic authentication header in wls 7.0.sp2 web service servlet (weblogic.webservice.server.servlet.WebServiceServlet)

    Hi!
    We need to implement authentication using our own methods, and the authentication
    information is provided to the web service implementation in a basic authentication
    header. The problem is, that the servlet
    weblogic.webservice.server.servlet.WebServiceServlet, which handles web services
    in
    wls 7.0.sp2, always attempts to perform authentication, if the header is present.
    Is there any way to circumvent this, because we want to implement authentication
    on our own?
    I already know two workarounds:
    The best would of course be to implement a custom security realm for our own
    authentication system. This is not an option, implementing an own security
    realm is overkill for this specific web service.
    The other way would be to route the requests by way of a custom servlet, which
    would
    remove the basic authentication header, and put the authentication info in custom
    headers, such as x-auth: <user:password>, or smthng similar, and after successful
    authentication, make a call to bea's servlet weblogic.webservice.server.servlet.WebServiceServlet.
    But still, I'd like to know if there is any way to tell bea's servlet to ignore
    the basic
    authentication header?
    Oh yeah, by the way, this is URGENT, as always. (really!! ;)
    Toni Nykanen

    Currently there is no option to turn off security check.
    I think you can use a servlet filter mapped to the URL
    of your service, instead of a proxy servlet?
    Regards,
    -manoj
    http://manojc.com
    "Toni Nykanen" <[email protected]> wrote in message
    news:3ef1577b$[email protected]..
    >
    Hi!
    We need to implement authentication using our own methods, and theauthentication
    information is provided to the web service implementation in a basicauthentication
    header. The problem is, that the servlet
    weblogic.webservice.server.servlet.WebServiceServlet, which handles webservices
    in
    wls 7.0.sp2, always attempts to perform authentication, if the header ispresent.
    Is there any way to circumvent this, because we want to implementauthentication
    on our own?
    I already know two workarounds:
    The best would of course be to implement a custom security realm for ourown
    authentication system. This is not an option, implementing an own security
    realm is overkill for this specific web service.
    The other way would be to route the requests by way of a custom servlet,which
    would
    remove the basic authentication header, and put the authentication info incustom
    headers, such as x-auth: <user:password>, or smthng similar, and aftersuccessful
    authentication, make a call to bea's servletweblogic.webservice.server.servlet.WebServiceServlet.
    >
    But still, I'd like to know if there is any way to tell bea's servlet toignore
    the basic
    authentication header?
    Oh yeah, by the way, this is URGENT, as always. (really!! ;)
    Toni Nykanen

  • Client triggers Web Service servlet

    Hi,
    I'm new to java enterprise app. I have to develop a web service which listens to incoming soap info and triggers a servlet to be displayed on the screen where the web service is installed. And the servlet must show the message received from soap. The problem is that I don't know how to trigger the servlet. Can anyone help me please? Thanks in advance!.
    Tobias

    Hi Martti,
    I am looking for something similar , were you able to get this to work?
    Also, how did you configure the identity assertion provider?
    Any help would be appreciated
    Thanks

  • Web Services - Servlets vs EJBs

    Hi,
    Looking for any suggestions about the benefits of using either servlets or EJBs as web service endpoints. Very early in the design of any application, I wish to expose my business logic components as web services, is there any particular benefit to using a specific approach (i.e. using either EJBs or Servlets as the end points of the web services exposing the business logic)?
    This is a totally new application so I have no considerations towards reusing old EJB code, etc. My initial thoughts favour using servlets, if only because it reduces the complexity / resources required for the application server (i.e only Web-container required, rather than Web & EJB container).
    Any thoughts please?

    Why do Servlets not scale as well? Surely they are
    more "lightweight" than an EJB (which has all theRMI
    overhead), and wouldn't it ultimately be down tothe
    underlying app server anyway?Right, but servlets are just HTTP request listeners.
    They aren't components, they aren't transactional,
    they don't handle persistence, they don't have
    naming services, they don't have queuing services.
    The EJB container offers you a lot.
    With that said, it's not just a choice between
    servlets and EJBs. You can use POJOs and avoid EJBs
    altogether if you do it right.
    Or choose the best of both worlds and mix 'n match as needed.
    Noone forces you to choose one over the other (at least not for any technical reasons, I'm not diving into corporate politics here).
    My thought was that web services were a better wayto
    expose business logic than EJBs, but if there some
    solid reason why this isn't the case I like toknow.
    Web services - lightweight? Maybe that's true of
    REST, but certainly not SOAP. There's an argument
    that says services are more heavyweight than EJBs,
    because all the XML on the wire is an expensive
    protocol.
    SOAP is heavy on the network, but it's essentially a rather thin layer on top of other services (if properly architected).
    For example we have a SOAP layer exposing a Spring application which proxies an EJB architecture.
    Next to that SOAP layer sits a traditional web application (servlets) which itself has a Spring application sitting on top of it for demonstration and testing purposes.
    And then there's an SDK allowing direct access to the Spring layer (and thus almost direct access to the EJB layer).
    That's the beauty of a true open architecture, each component can be built on top of another and the component underneath can function just fine without it.
    Look into Spring:
    http://www.springframework.org
    It's a lighter alternative to EJBs, and good plumbing
    for any Java EE app.While Spring can serve as an alternative for EJB in places where EJB are overkill it's of course not in competition with it.
    Spring is a service layer, making use of other technologies (like EJB, like AOP, like ORM) to provide data and other services (like Struts, like JSF, like JSP) to provide that data to requesters.

  • How to process SOAP attachment at web service??

    Hi
    I am implementing a web service to upload a file to server using SOAP message. How do I get to know that SOAP msg contains attachment and if so how to process it?
    Please help.

    Hi Praveen,
    Thanks for your help...
    I am new to web services and I am running short of the time to implement the sample code...
    Can you guide me to the step by step sample code for the same if you have one?
    Any how the link seems to be usefulllllllllllll
    thanks once againnnnn

  • SOAP Sender Adapter + Web Service Security

    Hi all
    We have a SOAP scenario, where Multiple clients will expose a same webservice and got the response back.
    While exposing a webservice calls its asking for credentails
    (yes we can create the service user with proper authentication and provide the information to client)
    But client dont want to use the credentials to expose a call. We are thinking to get the certificates from XI server (certificates are already installed) and give it to Client to by pass the credentials.
    Since the multiple Client are calling the same service, its tedious to install all  client certificates in XI.
    Kindly suggest your any ideas on how to perform this.
    Thanks
    Ramg

    Hello!
    Please refer to the three links below that may help you with using certificate in Web Services for Logon.
    Defining the Logon Procedure:
    http://help.sap.com/saphelp_nwpi71/helpdata/EN/d3/2bb3405226bc4ee10000000a1550b0/frameset.htm
    Authentication for Web Services:
    http://help.sap.com/saphelp_nwpi71/helpdata/EN/45/6bc1a021e80dece10000000a11466f/frameset.htm
    Authentication for Web Services:
    http://help.sap.com/saphelp_nwpi71/helpdata/EN/57/07813ee3d32b44e10000000a114084/frameset.htm
    Regards,
    Caio Cagnani

  • Passing Soap Header in Web Service

    Hi Team,
    In our application, we have used web service through webservice proxy wizard using the WSDL file.  Now due to security reasons we need to pass Soap Header in the webservice call. Can you please help on how to pass soap header in the webservice call ?
    Please find the below webservice code/
    Long ll_ret
    edpmdata ll_ReturnVal
    edpmreq lnv_Request_data
    //filter lnv_filter
    Datawindowchild dwc_child
    str_pass l_str_pass
    long l_l_row_count, l_l_row
    String l_s_code, l_s_modify, l_l_ret
    String str_proxy_name = "sohedpmservice"
    String l_s_delivery_pref, l_s_email
    String ls_url, l_s_ini_file
    l_s_ini_file = g_nv_ini.fnv_get_name ()
    ls_url = ProfileString(l_s_ini_file,"External", "EDPM_URL", "")
    Soapconnection lsc_Conn
    sohedpmservice lproxy_obj
    lsc_Conn = create Soapconnection
    SetPointer (Hourglass!)
    Try
    ll_ret = lsc_Conn.CreateInstance(lproxy_obj, str_proxy_name, ls_url)
    Catch (SoapException e )
    Error.fnv_error("0001", This, "ue_process_fields","Error Creating Instance","",FALSE,1,0)
    Message.ReturnValue = -1
    RETURN -1
    end try
    IF ll_ret <> 0 THEN
    Error.fnv_error("0001", This, "ue_process_fields","Error Creating Instance","",FALSE,1,0)
    Message.ReturnValue = -1
    RETURN -1
    END IF
    Try
    lnv_Request_data = create edpmreq
    lnv_Request_data.value = l_s_party_key
    ll_ReturnVal = lproxy_obj.getcommpref(lnv_Request_data)
    If ll_ReturnVal.ws_serviceresult.resultcode = '5' Then
       Error.fnv_error("0001", This, "ue_process_fields",String(ll_returnval.ws_serviceresult.ws_resultinfo) ,"Error Response ", FALSE, 1,0)
       Message.ReturnValue = -1
    RETURN -1
    End if
    l_s_delivery_pref = ll_ReturnVal.deliverymethod
    l_s_email = ll_ReturnVal.emailaddr
    i_str_pass.s[86] =  l_s_delivery_pref
    i_str_pass.s[87] =  l_s_email
    i_str_pass.s[88] = l_s_party_key
    Catch ( SoapException a )
    Error.fnv_error("0001", This, "ue_process_fields","Error Response","Error Response",FALSE,1,0)
    Message.ReturnValue = -1
    RETURN -1
    end try
    Destroy lsc_Conn
    Return 1

    What version of PowerBuilder?
    PB.Net or Classic?
    Are you using the SOAP or .Net Engine (if using Classic)?
    What kind of header?
    There is limited support for passing custom headers in the .Net engine in Classic.  The header would need to be defined in the WSDL for the service.
    Anything beyond that (e.g., WS-Security) would need to be handled in a WCF client in PB.Net.

  • How do pass the UserID and Password in the SOAP header for web services

    I am encountering issues trying to pass the userid and password in the SOAP header when consuming a 3rd party web service.  Rostewitz posted something similiar but I don't know how to type iv_xml.  Any help would be greatly appreciated.
    Thank you,
    jpina

    It helps to post a link to a thread when you refer to it.  If you are trying to implement that solution though, you can look at the parameter of the corresponding method being called.  The parameter has type 'SIMPLE' which means that it is compatible with all of the predefined elementary ABAP types.  In this case, you should use 'STRING'.

  • Web service, servlet, HttpServletResponse, Locale

    Hello guys!
    I have two questions:
    - Can a servlet be a web service?
    - For the next one, I supposed that yes... I'm trying to build a web service from a servlet and I get a strange error.
    I simplified the code to the maximum, and it became like this:
    public class PriceListServlet extends HttpServlet implements PriceListIF{
        public void init() {
         public void doPost(HttpServletResponse resp) {
              }and the interface is:
    public interface PriceListIF extends Remote {
         public void init() throws RemoteException;
         public void doPost(HttpServletResponse resp)throws RemoteException;
    }Cannot be more simple, can it?
    When I type ant build, I get the following error message:
    erreur : La classe java.util.Locale n'a pas de constructeur vide accessible public
    which means:
    error: Class java.util.Locale doesn't have public empty constructor
    I did a few tests, and if I put HttpServletRequest instead of HttpServletResponse, it works.
    If the doPost method doesn't have any parameter, it works!
    So there's a problem with HttpServletResponse...
    Does anyone know what's Locale got to do with HttpServletResponse????
    Thanks for your help
    Philippe

    Hello guys!
    I have two questions:
    - Can a servlet be a web service?
    - For the next one, I supposed that yes... I'm trying to build a web service from a servlet and I get a strange error.
    I simplified the code to the maximum, and it became like this:
    public class PriceListServlet extends HttpServlet implements PriceListIF{
        public void init() {
         public void doPost(HttpServletResponse resp) {
              }and the interface is:
    public interface PriceListIF extends Remote {
         public void init() throws RemoteException;
         public void doPost(HttpServletResponse resp)throws RemoteException;
    }Cannot be more simple, can it?
    When I type ant build, I get the following error message:
    erreur : La classe java.util.Locale n'a pas de constructeur vide accessible public
    which means:
    error: Class java.util.Locale doesn't have public empty constructor
    I did a few tests, and if I put HttpServletRequest instead of HttpServletResponse, it works.
    If the doPost method doesn't have any parameter, it works!
    So there's a problem with HttpServletResponse...
    Does anyone know what's Locale got to do with HttpServletResponse????
    Thanks for your help
    Philippe

  • SOAP Request with Web Service Security

    Hi masters of XI,
    the Oasis standard for web services security saids that exists three levels of security for web services, at higher level is Encryption, middle level is signature and at lower level is authentication with username and password inside the soap envelope.
    I need to do a SOAP Request signed with a X.509 certificate and username and password too in SAP PI 7.0 SP11. I can sign the request with X.509 certificate without problems but i can't authenticate the request with username and password in usernametoken element like saids the Oasis standard
    <wsse:Security>
    <wsse:UsernameToken>
    <wsse:Username>XXXX</wsse:Username>
    <wsse:Password>XXXXXXXXX</wsse:Password>
    </wsse:UsernameToken>
    </wsse:Security>
    How can we send UserNameToken's elements inside SOAP web service envelope
    signing with X.509 certificate also? There are any way to do it in the
    receiver agreement or receiver SOAP adapter?
    thanks.

    Hi,
    thank you very much for your answers.
    I have solved the SSL comunication and i can sign with X.509 certificates. My problem is that in the SOAP envelope of resquest signed only travels the X.509 certificate and I need to send the username security token (wsse:UsernameToken) also.
    <wsse:Security>
    <wsse:UsernameToken>
    <wsse:Username>XXXX</wsse:Username>
    <wsse:Password>XXXXXXXXX</wsse:Password>
    </wsse:UsernameToken>
    </wsse:Security>
    I can't find the solution to do it. The Netweaver documentation says that Netweaver is able to sign SOAP request with X.509 certificates and is able too for using UsernameToken as part of Oasis standard for web service security. In abap stack of NW you can assign a security profile to a web service call for signing the message or authenticate it with username/password inside SOAP envelope, but in java stack of XI i think that there is no way to do it.
    This is my Request:
    <?xml version="1.0" encoding="utf-8"?>
    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
      <soapenv:Header>
        <wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" soapenv:mustUnderstand="1">
          <wsse:BinarySecurityToken xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3" wsu:Id="CertId-71968700">MIIHdTCCBl2gAwIBAgIQOq4nmg5zi4NGsIGjPUZVuTANBgkqhkiG9w0BAQUFADCCAT4xCzAJBgNVBAYTAkVTMTswOQYDVQQKEzJBZ...8d4pAJYk=</wsse:BinarySecurityToken>
          <ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#" Id="Signature-104376803">
            <ds:SignedInfo>
              <ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
              <ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
              <ds:Reference URI="#id-104309952">
                <ds:Transforms>
                  <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
                </ds:Transforms>
                <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
                <ds:DigestValue>R6WE9gs+l496jHCgslgALWswEnE=</ds:DigestValue>
              </ds:Reference>
              <ds:Reference URI="#Timestamp-104310599">
                <ds:Transforms>
                  <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
                </ds:Transforms>
                <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
                <ds:DigestValue>aiCTZ0WwiZQEv8zVmmf8GLu/bYA=</ds:DigestValue>
              </ds:Reference>
            </ds:SignedInfo>
            <ds:SignatureValue>YR9Q5oUA6kFFmPYOIOQPTOgTgapMbkmgdlDM/TZJ2CS8ENAntfsnmpEbpUgOPUVMkgaECog0OKvlADHP0HvJtPdm2NJljZNCCgrk3hlmmtkXkRauVuH5KRiHE5NeWT4+Uspp3ashebu0IuOO66zt4Q=</ds:SignatureValue>
            <ds:KeyInfo Id="KeyId-104377209">
              <wsse:SecurityTokenReference xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="STRId-104377346">
                <wsse:Reference URI="#CertId-71968700" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3"/>
              </wsse:SecurityTokenReference>
            </ds:KeyInfo>
          </ds:Signature>     
          <wsu:Timestamp xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="Timestamp-104310599">
            <wsu:Created>2008-01-16T21:28:44.081Z</wsu:Created>
            <wsu:Expires>2008-01-16T21:33:44.081Z</wsu:Expires>
          </wsu:Timestamp>
        </wsse:Security>
      </soapenv:Header>
    And this is the request I need:
    <?xml version="1.0" encoding="utf-8"?>
    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
      <soapenv:Header>
        <wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" soapenv:mustUnderstand="1">
          <wsse:BinarySecurityToken xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3" wsu:Id="CertId-71968700">MIIHdTCCBl2gAwIBAgIQOq4nmg5zi4NGsIGjPUZVuTANBgkqhkiG9w0BAQUFADCCAT4xCzAJBgNVBAYTAkVTMTswOQYDVQQKEzJBZ...8d4pAJYk=</wsse:BinarySecurityToken>
          <ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#" Id="Signature-104376803">
            <ds:SignedInfo>
              <ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
              <ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
              <ds:Reference URI="#id-104309952">
                <ds:Transforms>
                  <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
                </ds:Transforms>
                <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
                <ds:DigestValue>R6WE9gs+l496jHCgslgALWswEnE=</ds:DigestValue>
              </ds:Reference>
              <ds:Reference URI="#Timestamp-104310599">
                <ds:Transforms>
                  <ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
                </ds:Transforms>
                <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
                <ds:DigestValue>aiCTZ0WwiZQEv8zVmmf8GLu/bYA=</ds:DigestValue>
              </ds:Reference>
            </ds:SignedInfo>
            <ds:SignatureValue>YR9Q5oUA6kFFmPYOIOQPTOgTgapMbkmgdlDM/TZJ2CS8ENAntfsnmpEbpUgOPUVMkgaECog0OKvlADHP0HvJtPdm2NJljZNCCgrk3hlmmtkXkRauVuH5KRiHE5NeWT4+Uspp3ashebu0IuOO66zt4Q=</ds:SignatureValue>
            <ds:KeyInfo Id="KeyId-104377209">
              <wsse:SecurityTokenReference xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="STRId-104377346">
                <wsse:Reference URI="#CertId-71968700" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3"/>
              </wsse:SecurityTokenReference>
            </ds:KeyInfo>
          </ds:Signature>
    <!-- THIS IS THE PART I NEED -->
    <wsse:UsernameToken xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="UsernameToken-104312926">
            <wsse:Username>xxxxxxx</wsse:Username>
            <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText"/>
          </wsse:UsernameToken>
    <!--  -->
    <wsu:Timestamp xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="Timestamp-104310599">
            <wsu:Created>2008-01-16T21:28:44.081Z</wsu:Created>
            <wsu:Expires>2008-01-16T21:33:44.081Z</wsu:Expires>
          </wsu:Timestamp>
        </wsse:Security>
      </soapenv:Header>

  • SOAP 1.2 web service fails when SOAP header has digital signatures

    Hi,
    When we upgraded our JAX-RPC web services from SOAP 1.1 to SOAP 1.2, they started failing with the following response.
    <env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
    <env:Header>
    <env:Upgrade>
    <env:SupportedEnvelope xmlns:soap12="http://www.w3.org/2003/05/soap-envelope"
    qname="soap12:Envelope"/>
    </env:Upgrade>
    </env:Header>
    <env:Body>
    <env:Fault xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
    <faultcode>env:VersionMismatch</faultcode>
    <faultstring>Version Mismatch</faultstring>
    <faultactor>http://schemas.xmlsoap.org/soap/actor/next</faultactor>
    </env:Fault>
    </env:Body>
    </env:Envelope>
    The following two errors were in log.xml
    An error occurred for port: {http://xxx.xxx.xxx/xxx/1.0/ws/TestService}TestServicePort: oracle.j2ee.ws.common.soap.fault.SOAP11VersionMismatchException: Version Mismatch.
    Unable to determine operation id from SOAP Message.
    We use web service handlers to add and verify digital signatures. The request message seems to be making it to the web service but is failing before reaching the web service handler which verifies the digital signature.
    Everything works fine when we don't add the digital signatures. The SOAP message without the digital signature doesn't have the SOAP header. I've listed the SOAP message with the digital signature below.
    <env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"
         xmlns:ns0="http://xxx.xxx.xxx/1.4/"
         xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
         <env:Header>
              <wsse:Security
                   xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
                   <ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
                        <ds:SignedInfo>
                             <ds:CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"></ds:CanonicalizationMethod>
                             <ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"></ds:SignatureMethod>
                             <ds:Reference URI="#Body">
                                  <ds:Transforms>
                                       <ds:Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"></ds:Transform>
                                  </ds:Transforms>
                                  <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></ds:DigestMethod>
                                  <ds:DigestValue>...</ds:DigestValue>
                             </ds:Reference>
                        </ds:SignedInfo>
                        <ds:SignatureValue>
                        </ds:SignatureValue>
                        <ds:KeyInfo>
                             <ds:X509Data>
                                  <ds:X509Certificate>
                                  </ds:X509Certificate>
                             </ds:X509Data>
                             <ds:KeyValue>
                                  <ds:RSAKeyValue>
                                       <ds:Modulus>
                                       </ds:Modulus>
                                       <ds:Exponent>AQAB</ds:Exponent>
                                  </ds:RSAKeyValue>
                             </ds:KeyValue>
                        </ds:KeyInfo>
                   </ds:Signature>
              </wsse:Security>
         </env:Header>
         <env:Body xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="Body">
              <ns0:SearchRequestMessage
                   xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:gml="http://www.opengis.net/gml"
                   xmlns:xxx="http://xxx.xxx.xxxl/1.4/"
                   xmlns:ns5="http://www.w3.org/1999/xlink"
                   >
                   <xxx:SearchCriteria itemsPerPage="10" maxTimeOut="180000" startIndex="1" startPage="1" totalResults="25">
                   </xxx:SearchCriteria>
              </ns0:SearchRequestMessage>
         </env:Body>
    </env:Envelope>
    We are using Oracle AS 10.1.3.3.0, WSDL 1.1, and SOAP 1.2. Everything works fine with WSDL 1.1 and SOAP 1.1.

    Take a look 'How to Use a Custom Serializer with Oracle Application Server Web Services' [1].
    In your case, you should be looking at BeanMultiRefSerializer (org.apache.soap.encoding.soapenc), which will serialize your data using href and providing a way to deal with cycles.
    All the best,
    Eric
    [1] http://www.oracle.com/technology/tech/webservices/htdocs/samples/serialize/index.html

  • Soap response the web service test page

    Hi
    I am trying to write the static client for a wlw web service. This web service doesn't have @jws:protocol specified, so it has get, post and soap. When I call one of its method using soap port in my static client, it returns the html looks like the weblogic test page for this web service. Here it is:
    <-------------------- RESPONSE TO CLIENT --------------->
    URL           : http://localhost:7001/webservices/testWS.jws
    Response Code :200
    Headers       :
      Date=Thu, 07 Feb 2008 17:18:08 GMT
      Content-Length=11724
      Content-Type=text/html; charset=UTF-8
      Expires=Thu, 01 Jan 1970 00:00:00 GMT
      Connection=Keep-Alive
      Set-Cookie=JSESSIONID=Hr9Qt7BTQQzvM0pGZhvyPjL7typsrTK1GLp0BZZQnRGFwfx90x8K!606
    033313; path=/
    Envelope   :
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <title>BEA WebLogic Workshop: testWS.jws Web Service</title>
    <link rel=stylesheet href="testWS.jws?.RESOURCE=shared.css">
    <body>
    <table border=0 cellspacing=0 cellpadding=0 width="100%">
    .....First why doesn't it return soap message? And it doesn't execute the method at all. How can I make it call the method and return the soap message?
    Thanks
    Edited by Holy at 02/08/2008 9:45 AM

    Figured out that the testWS.jws is deployed to use ssl. But the wsdl generated has http. It works fine after I manually changed to https.

  • Dynamically set the soap address for web services

    Hi,
    I am developing an Oracle J2ee1.3 web service for Oracle application server 10.1.2.
    The web service needs to be deployed on to multiple servers. Hence the host and port for the soap:address needs to be changed for each server.
    Eg: For the 1st server the soap:address is http://www.server1.com/test/MyWebService
    For 2nd server the soap:address is http://www.server2.com/test/MyWebService
    Is there any way to dynamically change this address based on the server the Web Service is deployed to?
    Any help is highly appreciated.
    Thanks,
    Subashini

    It helps to post a link to a thread when you refer to it.  If you are trying to implement that solution though, you can look at the parameter of the corresponding method being called.  The parameter has type 'SIMPLE' which means that it is compatible with all of the predefined elementary ABAP types.  In this case, you should use 'STRING'.

  • Changing SOAP Namespace for Web Service

    Hi Experts,
    Got a requirement to modify the SOAP namespace for a BAPI program exposed as a web service on SAP.
    The fieldd denoting the SOAP namespace is accessible via transaction SE80 and navigating under: Package Name>Enterprise Services>Service Definitions> and double clicking on the exposed web service and selecting "Properties".
    The SAP SOAP namespace provided by default is: urn:sap-com:document:sap:rfc:functions
    Is anyone aware of a means to modify this namespace on the web service? Any help would be greatly appreciated. Thanks!
    Regards,
    Lionel

    hi tan,
    Although the SOAP Runtime is generally designed for RFC-type calls, it can also be used to access Web Services that are not implemented in a Web AS. For example, the Google search engine offers some services using SOAP, which can be accessed from the SAP Web AS.
    Naming Conventions
    The SOAP Runtime offers three methods of representing the original ABAP names (everything in upper case and separated by underscores) as data types in XML. Each method is associated with a different XML namespace:
    urn:sap-com:document:sap:rfc:functions – this is the canonical representation, which means that all names in the XML document are represented as they are in ABAP on a 1:1 basis. For repeating groups (such as the rows of a table), an XML element with the tag name item is generated (in writing) and expected (in parsing).
    urn:sap-com:document:sap:soap:functions:uc-style – this naming convention is similar to the first one, with the difference that instead of item, the name of the structure of the table row is generated or expected.
    urn:sap-com:document:sap:soap:functions:mc-style – this third convention also involves conversion of the upper case ABAP names to mixed case (both upper and lower case), according to the following algorithm: All characters except the first one are implicitly in lower case, and the underscore acts as a Shift key to effect an upper case character. RFC_SYSTEM_INFO thus becomes RfcSystemInfo. The addition of an initial underscore makes the first character lower case: RFCSYSTEM_INFO thus becomes rfcSystemInfo. An underscore character is transferred by adding an additional underscore: RFC__SYSTEM_INFO thus becomes Rfc_systemInfo.
    When using the SOAP Runtime caller side, note the following points regarding the naming convention:
    If the called Web Service is implemented in the Web AS 6.20, always use the namespace convention urn:sap-com:document:sap:rfc:functions. The namespace for the SOAP method must also be set according to this convention. To do this, specify the importing parameter nsvalue of the method set_method in the class CSoapDocument.
    Setting the namespace of the naming convention for the SOAP method does NOT automatically mean that the SOAP Runtime also sets the naming convention for serialized SOAP messages. As a developer, you must ensure that the naming conventions are followed. To do this, you can use the methodsset_tag_name_format and set_item_name_format:
    The method set_tag_name_format of the class CSoapDokument can be used to control the upper case or mixed case naming convention for tags that correspond to ABAP data types. To activate the normal ABAP format (upper case), use the value CSoapConstants=>ic_tagfmt_default for the importing parameter format. To switch to the mixed format, use the value CSoapConstants=>ic_tagfmt_mixcase.
    The method set_item_name_format of the class CSoapDokument is used to control the use of the tag name for repeating groups in ABAP data types (table rows). To implement the structure name of the table row, set the value CSoapConstants=>ic_itemfmt_default for the importing parameter format.  To use item as a tag, set the value CSoapConstants=>ic_itemfmt_useitem.
    All names passed to the API must be in a format that is expected by the server side. This affects the importing parameter name of both the methods set_method and add_parameter of the class CSoapDocument. The SOAP Runtime caller side does not perform any conversion of these names. The document class on the calling side does NOT take into account the namespace you have selected here.
    You should only implement the mixed case naming convention where it is necessary. This particularly applies when calling external Web Services, over the structure of which you have no control.
    Sending the SOAP Header in the Call
    The SOAP Framework does not provide general support for the handling of SOAP Header elements.
    However, for calling external Web services, it is sometimes sufficient to be able to send simple Header entries as part of the request. In this special case, you can use the class CSoapDocumentHeader.
    An instance of the class can be filled using the methods set_header_as_string or set_header_as_dataref. Using the method add_header, it can then be added to an instance of the class CSoapDocument, and is then serialized as a part of the document instance when the call is made.
    regards
    karthik
    dont forgrt to reward me points if it helps u

Maybe you are looking for