Jax-ws web service client

Hi, I am confused by the web service document http://docs.oracle.com/cd/E17904_01/web.1111/e13758/use_cases.htm#i244846 section 2.4. The Note states:
You can invoke a Web service from any Java SE or Java EE application running on WebLogic Server (with access to the WebLogic Server classpath). Invoking a Web service from stand-alone Java applications that are running in an environment where WebLogic Server libraries are not available is not supported in this release for JAX-WS Web services.If I understand it correctly, it says jax-ws only can be consumed by the clients that have access to wls libraries. My web service client will be 3rd party business parnter. Not sure if they are on wls or not. Does it mean I can't use jax-ws?

When you just use the JAX-WS standard you do not need any WebLogic related classes to create a client for your web service.
When the web service is deployed the WSDL can be accessed. By using this WSDL you can create your client by using tools
such as wsimport (which comes with a JDK distribution and is located in the JDK_HOME/bin directory)
wsimport -keep -d C:\YOUR_PROJECT\src http://hostname:port/context/SomeWebService?wsdlthe 'keep' option make sure the generated .java files are not thrown away.

Similar Messages

  • JAX-WS web service client and Windows integrated Security authentication

    I am currently developing a JAX-WS web service client running on WebLogic 10.3.2.0. The client is connecting to exchange web service running on IIS.
    Everything works well when EWS is configured with Http basic authentication.
    The problems started when I changed the autentication method on EWS from Http basic authentication to Windows integrated Security authentication.
    The client is then unable to authenticate to the web service. Every request made to EWS returns with the message : Invalid HTTP server response [401] - Unauthorized.
    I tried using an authenticator like this one:
    static class RetrieveWSDLAuthenticator extends Authenticator
    private String username, password;
    public RetrieveWSDLAuthenticator(String user, String pass)
    username = user;
    password = pass;
    @Override
    protected PasswordAuthentication getPasswordAuthentication()
    return new PasswordAuthentication(username, password.toCharArray());
    and setting it as the default authenticator :
    Authenticator.setDefault(new MyAuthenticator("username", "password"));
    but the method getPasswordAuthentication() was not even called.
    Is there a way to make a JAX-WS client works with Windows integrated Security ?

    WIS is not suppported on WLS JAX-WS. You'll need to use other authentication mechanisms such as http basic (which you tried already), or message-level security such as UNT, or SAML.
    Regards,
    Pyounguk

  • JAX-WS Web Service Client: com.sun.xml.internal.ws.client.ClientTransportEx

    Dear Java EE Experts,
    I have developed a JAX-WS based web service client in net beans. The WSDL is successfully imported. I can create objects based on classes gernerated from WSDL. But when I call the actual web service method (giving an input object and expecting a return/output object), I get an exception:
    ===============================
    Exception in thread "main" com.sun.xml.internal.ws.client.ClientTransportException: The server sent HTTP status code 400: Bad Request
    at com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.checkStatusCode(HttpTransportPipe.java:196)
    at com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.process(HttpTransportPipe.java:168)
    at com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.processRequest(HttpTransportPipe.java:83)
    at com.sun.xml.internal.ws.transport.DeferredTransportPipe.processRequest(DeferredTransportPipe.java:105)
    at com.sun.xml.internal.ws.api.pipe.Fiber.__doRun(Fiber.java:587)
    at com.sun.xml.internal.ws.api.pipe.Fiber._doRun(Fiber.java:546)
    at com.sun.xml.internal.ws.api.pipe.Fiber.doRun(Fiber.java:531)
    at com.sun.xml.internal.ws.api.pipe.Fiber.runSync(Fiber.java:428)
    at com.sun.xml.internal.ws.client.Stub.process(Stub.java:211)
    at com.sun.xml.internal.ws.client.sei.SEIStub.doProcess(SEIStub.java:124)
    at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:9Cool
    at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:7Cool
    at com.sun.xml.internal.ws.client.sei.SEIStub.invoke(SEIStub.java:107)
    at $Proxy28.smsSpcIPCC(Unknown Source)
    at javaapplication1.Main.smsSpcIPCC(Main.java:34)
    at javaapplication1.Main.recordComplaint(Main.java:54)
    at javaapplication1.Main.main(Main.java:25)
    Java Result: 1
    BUILD SUCCESSFUL (total time: 2 minutes 22 seconds)
    ===============================
    The code snippet that causes the runtime exception is (exception comes on last line of this code:
    ===============================
    ServiceRequest sr = new ServiceRequest();
    sr.setSerialNumber("211778");
    sr.setProductCode("PSTN");
    sr.setMSISDN("03005499257");
    sr.setComplaintType("P1");
    sr.setStatus("Open");
    sr.setSubStatus("Unassigned");
    com.siebel.customui.SMSSpcIPCCInput input = new SMSSpcIPCCInput();
    input.setOperation("Registration");
    ListOfWcServiceRequestIo srList = new ListOfWcServiceRequestIo();
    srList.getServiceRequest().add(sr);
    input.setListOfWcServiceRequestIo(srList);
    SMSSpcIPCCOutput output = smsSpcIPCC(input);
    ===============================
    Not sure how to resolve it. Please help.
    Thanks & Regards,
    Ahsan

    WIS is not suppported on WLS JAX-WS. You'll need to use other authentication mechanisms such as http basic (which you tried already), or message-level security such as UNT, or SAML.
    Regards,
    Pyounguk

  • JAX-RPC Web services client error

    Hi!
    I use Jdevelop 10g 9.0.5.2 with JAX-RPC extension and OC4J 10.1.3.
    I can develop RPC/literal and document/literal Web services, but when I try to run a client program I've got this error.
    "Error: cannot access class oracle.j2ee.ws.saaj.soap.Constants; file oracle\j2ee\ws\saaj\soap\Constants.class not found"
    Could anyone tell me how to solve this problem?

    Hi,
    I am attempting the same task. With different problems.
    After creating a .war with deploytool, I try to deploy it to a OC4J that comes with JDev.
    It result in an exception saying the Servlet is not a Servlet. Wich is true.
    Do you know how to deploy this .war to an OC4J? (read IAS 9.0.3)

  • Web service client proxy thread safe?

    Is the jax-ws web service client proxy and port objects thread safe in Weblogic 10.3.4?
    Been searching through the docs but can't find any info on this.

    I have searched and it seems that with cxf it's safe to do something like this.
    Nobody knows if this is safe using metro?

  • Calling One Jax/rpc web service from another.

    We have a number of services residing in the same Oracle 10.1.3 app server container. These are deployed as Jax RPC Web Services
    I am trying to figure out what are the different options to have once web service invoke an operation on another (without directly linking to the Java code). The reason we want to keep separation as far as possible is that these services may later migrate to different app servers and in the spirit of SOA all we want to change when a service migrates is address and would like everything else to remain the same.
    So for example, if Web Service A needs to invoke an operation X in web service B,
    One way to do this seems to be to generate a proxy for web service B, include the proxy in Web Service A and then simply do B.X() from Web Service A.
    Is this is the best way to do it ?
    Are there other alternative approaches available ? Such as using the built in ESB features of Oracle App Server 10.1.3?
    Any pointers will be greatly appreciated.
    Thanks
    RR

    Hi all,
    I've managed to get this working by using the following property settings:
    System.getProperties().setProperty("http.proxyHost", "Proxy_Hostname");
    System.getProperties().setProperty("http.proxyPort", "8080");
    System.getProperties().setProperty("http.nonProxyHosts", "localhost,hostbox09");
    And solving the authentication problem using this property setting on the java cmd line:
    -Dweblogic.net.proxyAuthenticatorClassName=com.mycompany.MyProxyAuthenticator
    This class is an impl class of weblogic.common.ProxyAuthenticator interface.
    The other thing to note is that MyProxyAuthenticator needs to be in the server pre_classpath.
    Then I just call JAX-RPC or JAX-WS web service client calls as normal.
    Regards,
    Paul

  • XML Parser Error while creating Web service Client using JAX RPC

    hello evryone,
    Im facing XML Parser Error while creating web service client using JAX RPC. Im using Net Beans IDE for development purpose. I have wrote configuration file for client. Now i want to create Client stub. However i dont know how to do this in Net Beans. So i tried to do it from Command promt using command :
    wscompile -gen:client -d build -classpath build config-wsdl.xml
    here im getting Error:
    error parsing configuration file: XML parsing error: com.sun.xml.rpc.sp.ParseException:10: XML declaration may only begin entities
    Please help me out.
    Many thanks in advance,
    Kacee

    Can i use the client generated using jdeveloper 11g to import into the oracle forms 10g, i.e., form builder 10g. Currently this is the version we have in our office.

  • JAX-WS Web Service with XFire Client

    I wrote a simple web service and client using XFire. However the server now needs to be JAX-WS. I wrote a simple service using NetBeans but I can't seem to get it to work with XFire. JAX-WS doesn't seem to like the SOAP XFire is sending it and the parameters passed into the web method are nulls instead of the intended values.
    Here is my web service:
    package org.me.hi;
    import javax.jws.WebMethod;
    import javax.jws.WebResult;
    import javax.jws.WebService;
    import javax.jws.soap.SOAPBinding;
    import javax.jws.soap.SOAPBinding.Style;
    import javax.jws.soap.SOAPBinding.Use;
    import javax.jws.soap.SOAPBinding.ParameterStyle;
    @WebService(name="HelloWS", targetNamespace="http://hi.me.org")
    @SOAPBinding(style=Style.DOCUMENT, use=Use.LITERAL, parameterStyle=ParameterStyle.WRAPPED)
    public class HelloWS {
        @WebMethod(operationName="add", action="")
        @WebResult(name="return", targetNamespace="http://hi.me.org")
        public Integer add(Integer a, Integer b) {
            if (a == null)
                System.out.println("a is null");
                return null;
            if (b == null)
                System.out.println("b is null");
                return null;
            System.out.println("a: " + a + " b: " + b);
            return a + b;
    }Here is the WSDL:
    <?xml version="1.0" encoding="UTF-8"?>
    <definitions xmlns:tns="http://hi.me.org" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns="http://schemas.xmlsoap.org/wsdl/" targetNamespace="http://hi.me.org" name="HelloWSService">
      <types>
        <xsd:schema>
          <xsd:import namespace="http://hi.me.org" schemaLocation="http://localhost:8084/HelloWS/HelloWS?xsd=1"/>
        </xsd:schema>
      </types>
      <message name="add">
        <part element="tns:add" name="parameters"/>
      </message>
      <message name="addResponse">
        <part element="tns:addResponse" name="parameters"/>
      </message>
      <portType name="HelloWS">
        <operation name="add">
          <input message="tns:add"/>
          <output message="tns:addResponse"/>
        </operation>
      </portType>
      <binding type="tns:HelloWS" name="HelloWSPortBinding">
        <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
        <operation name="add">
          <soap:operation soapAction=""/>
          <input>
            <soap:body use="literal"/>
          </input>
          <output>
            <soap:body use="literal"/>
          </output>
        </operation>
      </binding>
      <service name="HelloWSService">
        <port binding="tns:HelloWSPortBinding" name="HelloWSPort">
          <soap:address location="http://localhost:8084/HelloWS/HelloWS"/>
        </port>
      </service>
    </definitions>Here is my quick and dirty XFire client:
    package org.me.hi;
    import java.net.MalformedURLException;
    import java.net.URL;
    import org.codehaus.xfire.client.Client;
    public class HelloTest {
        public static void main(String[] args) {
            Client client;
            try {
                client = new Client(new URL("http://localhost:8085/HelloWS/HelloWS?wsdl"));
                Object[] results = client.invoke("add", new Object[] {1, 2});
                if (results.length != 0) {
                    System.out.println("result: " + (Integer)results[0]);
                } else {
                    System.out.println("null return");
            } catch (MalformedURLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
    }Here is the SOAP I intercepted between the XFire client and the JAX-WS service:
    Calling the web method:
    <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <soap:Body>
        <ns1:add xmlns:ns1="http://hi.me.org">
          <ns1:arg0>1</ns1:arg0>
          <ns1:arg1>2</ns1:arg1>
        </ns1:add>
      </soap:Body>
    </soap:Envelope>Response:
    <?xml version="1.0" ?>
    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns1="http://hi.me.org">
      <soapenv:Body>
        <ns1:addResponse></ns1:addResponse>
      </soapenv:Body>
    </soapenv:Envelope>Console at the server side:
    a is nullConsole at the client side:
    null returnNot sure what I'm doing wrong, but I wrote a quick JAX-WS client using NetBeans and it works. We would like to keep using XFire if possible. Here is the SOAP between the JAX-WS client and the JAX-WS web service.
    <?xml version="1.0" ?>
    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns1="http://hi.me.org/">
      <soapenv:Body>
        <ns1:add>
          <arg0>1</arg0>
          <arg1>2</arg1>
        </ns1:add>
      </soapenv:Body>
    </soapenv:Envelope>
    <?xml version="1.0" ?>
    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns1="http://hi.me.org/">
      <soapenv:Body>
        <ns1:addResponse>
          <return>3</return>
        </ns1:addResponse>
      </soapenv:Body>
    </soapenv:Envelope>

    Result after navigating to: http://localhost:8084/HelloWS/HelloWS?xsd=1
    <?xml version="1.0" encoding="UTF-8"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://hi.me.org/" version="1.0">
      <xs:element xmlns:ns1="http://hi.me.org/" type="ns1:add" name="add"/>
      <xs:complexType name="add">
        <xs:sequence>
          <xs:element type="xs:int" minOccurs="0" name="arg0"/>
          <xs:element type="xs:int" minOccurs="0" name="arg1"/>
        </xs:sequence>
      </xs:complexType>
      <xs:element xmlns:ns2="http://hi.me.org/" type="ns2:addResponse" name="addResponse"/>
      <xs:complexType name="addResponse">
        <xs:sequence>
          <xs:element type="xs:int" minOccurs="0" name="return"/>
        </xs:sequence>
      </xs:complexType>
    </xs:schema>

  • RIDC client using JAX-WS Web Service requires OWSM policy

    Hi
    For development purposes, I want to invoke the RIDC JAX-WS Web Service (I believe this to be the 11g idc native ws) but an error is thrown stating the various policies are invalid. The fact is my instance of Weblogic is not set up with OWSM and there are no security policies applied or configured.
    I was wondering if there was a way to invoke this web service using http basic authentication and bypass the requirement to have a policy attached.
    If not, does anyone have steps on how to enable OWSM and policies, and attach these to the IDC native web services).
    Thanks
    M

    Hi Ryan
    Yes, I have tried to use the JAX-WS with configuration that I was hoping would set Basic Auth on the request, however an error is thrown stating that the required policies are invalid on the server.
    In summary:
    I create a JaxWSClient client.
    I create a binder using the client.
    I create a IdcContext using a valid username and password.
    I set up the service details and params in the binder.
    I send the request by invoking the client and passing the binder and IdcContext.
    With this basic set-up, I get a SOAP fault from the server stating that policy 'oracle/no_authentication_service_policy' and oracle/no_messageprotection_service_policy are invalid. It makes sense that there are invalid as they are not present on my weblogic instance, and it seems that because I have not specified any other configuration, that these are treated as the default policies.
    Setting up basic auth would be ideal, as I do not have control of the Weblogic instances, and so getting OWSM would be a pain. There may be some way to set up the client to use Basic Auth, but unfortunately I cannot see how.
    Cheers

  • How to prevent downloading wsdl in weblogic web service client

    Hi,
    I get a problem regarding weblogic web service client. My working environment:
    weblogic server 8.1
    Windows XP SP2
    JDK 1.4
    I use the weblogic tool to generate the client jar file from the wsdl file.
         <target name="generate-client">
              <clientgen wsdl="ACCESS.wsdl"
                   packageName="xxxxxx.client"
                   clientJar="${client}/${AccessClient_jar_file}"
                   keepGenerated="true"
                   saveWSDL="true"
              />
              <javac srcdir="${source}"
              destdir="${client}"
              includes="**/AccessClient.java">
              <classpath>
              <pathelement path="${client}/${AccessClient_jar_file}"/>
              </classpath>
              </javac>
         </target>
    After that, I create a client java file to invoke the service deploy in the server.
    public static void main(String[] argv)
    throws Exception
         int transactionId = 100;
         int id = 1000;
    // 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");
    AccessServicePorts ws = new AccessServicePorts_Impl(argv[0]);
    AccessService port = ws.getAccessService();
    // Resource - create
    Resource resource = new Resource();
    resource.setRES_CD("Create ResCo");
    resource.setCODE_CODE("code_cod");
    resource.setRES_TYPE("Resource typ");
    resource.setCOMMON_FIELD(common);
    AccessDefaultResult resultItems = port.createResource(resource);
    System.out.println("createResource : " + resultItems);
    I find that this web service client always issue 2 http requests to invoke an web service method deployed in server.
    1st http reqeust:
    GET /AccessEpol/EpolServiceSoap?WSDL HTTP/1.1
    User-Agent: Java/1.4.2_08
    Host: 127.0.0.1:8001
    Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
    Connection: keep-alive
    the return result is the wsdl downloaded from the server.
    2nd http request is the real web service request.
    The question is how could I eliminate the 1st http request because it's really unnecessary. I use other web service client like Axis 1.x, Axis client never has the http request to download the wsdl from the server.
    I read through weblogic web service document. It do mentions that put saveWSDL="true" in the clientgen ant task. the default value for saveWSDL is true already. I did try saveWSDL="false" also. None of them can eliminate the 1st http request.
    appreciate for any answer my question?

    Hi David,
    thanks for the reply.
    More or less I agree some points you mentioned above.
    I did use Axis 1.x to test the inter-operability. The web service was developed in Weblogic 8.1 and is a part of an existing web application. It will be merged to existing application deployed in weblogic 8.1.
    I also program the web service client to test the web service.
    The implementation of the server and client will be handed over the project team and training for supporting or continuous development have to be conducted by me. So I don't like to use two types of technologies which will make thing complex.
    I found this issue when I tried to protected the web service endpoint, eg http://localhost:7001/epol/service, using the web application Basic mechanism. The wsdl URL http://localhost:7001/epol/service?WSDL is also protected in this case. Unfortunately the username/password pair is not sent to the server when the weblogic client download the WSDL from the server. In this case, the client failed and throw exception.

  • URGENT **** Need help for JAX-RPC Web Service Proxy deploy to OC4J 10.1.3.5

    Hi everyone!
    I’m really new to web services.
    I’m getting a *500 internal server error* while deploying my JAX-RPC web service Proxy to an Oracle AS, in an OC4J, v. 10.1.3.5.0.
    Running my client from my development environment (*jdeveloper 10g, 10.1.3.5.0*) everything functions correctly: from jdeveloper I can contact and use the web service defined by the following endpoint: https://www.medialibrary.it/services/federaMLOL.asmx?WSDL
    I created a "try_ws_client.jsp" file that runs correctly from my local development environment jdeveloper (that uses an embedded oc4j, v. 10.1.3.5.0) but fails when run from the test server (Oracle AS, in an OC4J, v. 10.1.3.5.0), getting, as I mentioned a 500 internal server error, a white page in IE but with FF the message says: The’s an error in the servlet .....
    Here's how I created the ws proxy and how I’m using it to consume the ws I mentioned.
    1. I used the jdeveloper “Create Web Service Proxy” wizard (File > New > Business Tier > Web Services > Web Service Prox) and in the WSDL document URL I put: https://www.medialibrary.it/services/federaMLOL.asmx?WSDL
    2. The operation ended without adding nothing to the web.xml file and creating the proxy files. One of them is: FederaMLOLSoapClient.java that have the WS exposed methods (es: public boolean createUser(String) ) + a “main” method with the example how to use this client to consume the WS.
    public static void main(String[] args) {
    try {
    it.reggiocity.provincia.mlol.proxy.FederaMLOLSoapClient myPort = new it.reggiocity.provincia.mlol.proxy.FederaMLOLSoapClient();
    System.out.println("calling " + myPort.getEndpoint());
    // Add your own code here
    } catch (Exception ex) {
    ex.printStackTrace();
    3. In FederaMLOLSoapClient.java I’ve create the method "tyIt":
    public String tryIt(String username) {
    try {
    it.reggiocity.provincia.mlol.proxy.FederaMLOLSoapClient myPort = new it.reggiocity.provincia.mlol.proxy.FederaMLOLSoapClient();
    if(myPort.createUser(String username)) {
    return “O.K”;
    } else {
    return “K.O”;
    } catch (Exception ex) {
    // logs error
    4. I created my try_ws_client.jsp file that creates FederaMLOLSoapClient object and calls the tryIt method, printing the “OK” or “KO” message.
    <%@ page import="it.reggiocity.provincia.biblioreggiane.*"%>
    <%
    String message = "";
    FederaMLOLSoapClient obj= new FederaMLOLSoapClient( );
    message = obj.tryIt(“AAAAAA70R10H226H”);
    %>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <%@ page contentType="text/html;charset=windows-1252"%>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1252"/>
    <title>prova</title>
    </head>
    <body><%=message%></body>
    </html>
    The situation is:
    My try_ws_client.jsp runs correctly from my jdeveloper and the user is created while creating app.ear and deploying it to my Oracle AS/OC4J as mentioned above, I get a 500 Internal Server Error.
    Any idea to find a solution to this problem?
    Please help.
    Take care.
    John M.

    Hi,
    you want to build the Web Service, or you want to consume the Service as a client? If the latter, Web client (ADF?) or Java client?
    Frank

  • Cannot attach a WS-Policy to Jax-RPC Web Service

    I am having trouble trying to associate a WS-Security Policy with a BEA Jax-RPC Web Service?
    I am following the following procedure to try to associate a the policy:
    http://edocs.bea.com/wls/docs100/ConsoleHelp/taskhelp/webservices/ConfigureWSPolicyFile.html
    The problem is that when I navigate on the Administration Console to
    Deployments
    => AdapterAdminService (this is the name of my application)
    => com.gateway.admin.wsdl.v10.AdminImpl (this is the name of my Web Service)
    => Configuration
    => WS-Policy
    The Web console displays a stacktrace mentioning an "IndexOutOfBoundsException" :
    Error opening /jsp/webservice/WebServiceConfigurationWebServicePoliciesForm.jsp.
    The source of this error is java.lang.IllegalArgumentException: The property you provided 'contents' of form 'deploymentPlanForm' must not be set to null. at com.bea.console.taglib.html.TableTag.registerDataSet(TableTag.java:1588) at com.bea.console.taglib.html.TreeTableTag.doRegisterDataSet(TreeTableTag.java:49) at com.bea.console.taglib.html.TableTag.doStartTag(TableTag.java:1360) at jsp_servlet._jsp._webservice.__webserviceconfigurationwebservicepoliciesform._jsp__tag9(__webserviceconfigurationwebservicepoliciesform.java:498) at jsp_servlet._jsp._webservice.__webserviceconfigurationwebservicepoliciesform._jsp__tag8(__webserviceconfigurationwebservicepoliciesform.java:459) at jsp_servlet._jsp._webservice.__webserviceconfigurationwebservicepoliciesform._jsp__tag7(__webserviceconfigurationwebservicepoliciesform.java:416) at jsp_servlet._jsp._webservice.__webserviceconfigurationwebservicepoliciesform._jspService(__webserviceconfigurationwebservicepoliciesform.java:265) at weblogic.servlet.jsp.JspBase.service(JspBase.java:34) at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:226) at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:124) at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:283) at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:175) at weblogic.servlet.internal.RequestDispatcherImpl.invokeServlet(RequestDispatcherImpl.java:528) at weblogic.servlet.internal.RequestDispatcherImpl.include(RequestDispatcherImpl.java:454) at org.apache.beehive.netui.pageflow.scoping.internal.ScopedRequestDispatcher.include(ScopedRequestDispatcher.java:119) at com.bea.netuix.servlets.controls.content.JspContent.beginRender(JspContent.java:551) at com.bea.netuix.servlets.controls.content.NetuiContent.beginRender(NetuiContent.java:363) at com.bea.netuix.nf.ControlLifecycle$7.visit(ControlLifecycle.java:483) at com.bea.netuix.nf.ControlTreeWalker.walkRecursiveRender(ControlTreeWalker.java:518) at com.bea.netuix.nf.ControlTreeWalker.walkRecursiveRender(ControlTreeWalker.java:529) at com.bea.netuix.nf.ControlTreeWalker.walkRecursiveRender(ControlTreeWalker.java:529) at com.bea.netuix.nf.ControlTreeWalker.walkRecursiveRender(ControlTreeWalker.java:529) at com.bea.netuix.nf.ControlTreeWalker.walkRecursiveRender(ControlTreeWalker.java:529) at com.bea.netuix.nf.ControlTreeWalker.walk(ControlTreeWalker.java:220) at com.bea.netuix.nf.Lifecycle.processLifecycles(Lifecycle.java:375) at com.bea.netuix.nf.Lifecycle.processLifecycles(Lifecycle.java:341) at com.bea.netuix.nf.Lifecycle.processLifecycles(Lifecycle.java:332) at com.bea.netuix.nf.Lifecycle.run(Lifecycle.java:306) at com.bea.netuix.nf.UIControl.render(UIControl.java:578) at com.bea.netuix.servlets.controls.PresentationContext.render(PresentationContext.java:482) at com.bea.netuix.servlets.util.RenderToolkit.renderChild(RenderToolkit.java:146) at com.bea.netuix.servlets.jsp.taglib.RenderChild.doStartTag(RenderChild.java:62) at jsp_servlet._framework._skeletons._default.__gridlayout._jspService(__gridlayout.java:285) at weblogic.servlet.jsp.JspBase.service(JspBase.java:34) at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:226) at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:124) at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:283) at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:175) at weblogic.servlet.internal.RequestDispatcherImpl.invokeServlet(RequestDispatcherImpl.java:528) at weblogic.servlet.internal.RequestDispatcherImpl.include(RequestDispatcherImpl.java:454) at com.bea.netuix.servlets.controls.application.laf.JspTools.renderJsp(JspTools.java:123) at com.bea.netuix.servlets.controls.application.laf.JspControlRenderer.beginRender(JspControlRenderer.java:72) at com.bea.netuix.servlets.controls.application.laf.PresentationControlRenderer.beginRender(PresentationControlRenderer.java:65) at com.bea.netuix.nf.ControlLifecycle$7.visit(ControlLifecycle.java:479) at com.bea.netuix.nf.ControlTreeWalker.walkRecursiveRender(ControlTreeWalker.java:518) at
    I have this issue with both IE7 and Firefox 2. My domain is a WLS 10.0MP1 domain and is deployed on my Windows XP laptop.
    I am generating the WS from WSDL with the following ant command:
              <wsdlc srcWsdl="${wsdl.location.path}/AdapterAdministration.wsdl"
                   destJwsDir="${gen.compiled.wsdl.dir}"
                   packagename="com.gateway.admin.wsdl.v10.server"
                   destImplDir="server_impl_example" />
    then
                   <jwsc     srcdir="${src.dir}" destdir="${dist.dir}" classpathref="project.class.path" debug="true">
                             <jws file="com/gateway/admin/wsdl/v10/AdminImpl.java"
                                  compiledWsdl="${gen.compiled.wsdl.dir}/AdapterAdministration_wsdl.jar" />
                        </jwsc>
    and finally, I deploy it with:
              <wldeploy action="deploy"
                   name="AdapterAdminService"
                   source="${dist.dir}/AdminImpl.war"
                   user="${wls.domain.user}"
                   password="${wls.domain.pwd}"
                   verbose="true"
                   stage="no"
                   upload="true"
                   adminurl="t3://${wls.domain.host}:${wls.domain.port}"
                   targets="${wls.domain.servername}" />
    Do you have any idea what might be wrong here?
    Thanks in advance,
    Svend

    Hi all,
    Some more information: I have created another very simple Jax-RPC Web Service, now using the @Policy annotation. The policy I specify is then correctly taken into account, but I still have the same symptom when I navigate to the Configuration => WS-Policy page on the Web Console (i.e., I cannot associate a WS-Policy to my WS with the Web Console)
    Beginning of the JWS file:
    @WebService(...)
    @WLHttpTransport(serviceUri = "", portName = "AdapterAdmin")
    @Binding(Binding.Type.SOAP12)
    @Policy(uri="Wssp1.2-Http-UsernameToken-Digest.xml")
    public class AdminImpl implements Admin {
    Ant task I use to build and deploy the service:
    <target name="build-service" depends="prepare">
              <mkdir dir="package"/>
              <mkdir dir="package/WEB-INF"/>
              <mkdir dir="package/WEB-INF/lib"/>
              <jwsc     
                   srcdir="${src.dir}"
                   destdir="package"
                   classpathref="project.class.path"
                   debug="true">
                   <jws
                        file="com/gateway/admin/wsdl/v10/AdminImpl.java"
                        contextpath="/AdminImpl2"
                        explode="true"
                   />
              </jwsc>
              <move todir="package/WEB-INF">
                   <fileset dir="package/com/gateway/admin/wsdl/v10/AdminImpl/WEB-INF"></fileset>
              </move>
              <move todir="package/META-INF">
                   <fileset dir="package/xsize/gateway/admin/wsdl/v10/AdminImpl/META-INF"></fileset>
              </move>
              <copy todir="package/WEB-INF/lib">
                   <fileset dir="${lib.dir}"
                                  includes="client-1.0.jar,
                                       tools.jar />
              </copy>
              <delete dir="package/com" />
              <jar destfile="${dist.dir}/simpleWS2.war" >
                   <fileset dir="package" />
              </jar>     
              <wldeploy action="deploy"
                   name="AdminService-withPolicyAnnotation"
                   source="${dist.dir}/simpleWS2.war"
                   user="weblogic"
                   password="weblogic"
                   verbose="true"
                   stage="no"
                   upload="true"
                   adminurl="t3://localhost:9001"
                   targets="AdminServer" />
         </target>
    "

  • Bulk batch Jax-WS web services and memory concerns

    I have a requirement to create a web service client to upload 150,000+ records from our database.  My main question is whether others are creating web services to process bulk data and how they handle memory concerns.
    I began with the standard API, populating the jax-b annotated beans created from the wsimport.  I used JConsole to analyze memory usage.  I noticed that there is a sharp spike in the plot of the heap usage (from 200MB to 800MB) right after the invoke method call.
    The problem is that the max heap size on our app server is set to 1GB and since this application shares it with other applications I keep getting a out of memory error.
    I was asked to look for alternatives, so I tried using the Dispatch API creating the payload by sub-tree marshaling to StAX.  The issue I then ran into is that I have a outputstream and the dispatch api is expecting an inputstream.  I tried the options found here http://ostermiller.org/convert_java_outputstream_inputstream.html
    However after using jconsole to analyze again it appears the writing to a temp file or using a byte array increases the amount of memory being used to almost equivalent of using the standard API.  I tried using piped streams in separate threads and the single threaded circular buffer methods, but the application seems to hang after the invoke method call.
    Any help would be appreciated.

    also, you could "page" the data, returning some max number of records in each page of data and a "next page" cookie. this is the standard approach to returning bulk data from a web service.

  • JAX-WS web service - "Cannot find dispatch method"

    I'm getting the same error response every time I send a request to my JAX-WS web service:
    <ns2:Fault xmlns:ns2="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns3="http://www.w3.org/2003/05/soap-envelope">
       <faultcode>ns2:Client</faultcode>
       <faultstring>Cannot find dispatch method for {http://www.w3.org/2003/05/soap-envelope}Envelope</faultstring>
    </ns2:Fault>I've tried using JAX-WS RI 2.1.7 and 2.2 on my Tomcat server, but both return the same error response. It will return the WSDL just fine (when "?wsdl" is appended to the endpoint URL). I used "wsimport" to generate the necessary Java classes from my WSDL--it used JAX-WS RI 2.1.6 (the one included with the JDK I guess) to generate the Java source files.
    Other people online have had similar problems, but never with the SOAP element "{http://www.w3.org/2003/05/soap-envelope}Envelope", always with things specific to their WSDLs like "{}reqParams" or "{http://www.telekom.at/eai/WSToCramerCSIRead}CSIRead". I set a debug breakpoint at the start of my SIB method and it doesn't even get that far.
    Any ideas? Thanks for your help.
    WSDL:
    <?xml version="1.0" encoding="utf-8"?>
    <!-- This wsdl file is for an XDS-I.b Imaging Document Source Actor
         It can be used 'as is' to support Imaging Document Source Retrieve Imaging Document Set Transaction
         using Synchronous Web Services. 
         -->
    <definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
      xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
      xmlns:ihe="urn:ihe:iti:xds-b:2007" xmlns:iherad="urn:ihe:rad:xdsi-b:2009" xmlns:rs="urn:oasis:names:tc:ebxml-regrep:xsd:rs:3.0"
      targetNamespace="urn:ihe:rad:xdsi-b:2009" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/"
      xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" name="ImagingDocumentSource">
      <documentation>IHE XDS-I.b Imaging Document Source</documentation>
      <types>
        <xsd:schema elementFormDefault="qualified"
          targetNamespace="urn:ihe:iti:xds-b:2007"
          xmlns:ihe="urn:ihe:iti:xds-b:2007">
          <!-- Include the message schema -->
          <xsd:include schemaLocation="../schema/IHE/XDS.b_DocumentRepository.xsd"/>
        </xsd:schema>
        <xsd:schema elementFormDefault="qualified"
          targetNamespace="urn:ihe:rad:xdsi-b:2009"
          xmlns:ihe="urn:ihe:iti:xds-b:2007"
          xmlns:iherad="urn:ihe:rad:xdsi-b:2009">
          <!-- Include the message schema -->
          <xsd:include schemaLocation="../schema/IHE/XDSI.b_ImagingDocumentSource.xsd"/>
        </xsd:schema>
        <xsd:schema elementFormDefault="qualified"
          targetNamespace="urn:oasis:names:tc:ebxml-regrep:xsd:rs:3.0"
          xmlns:rs="urn:oasis:names:tc:ebxml-regrep:xsd:rs:3.0">
          <!-- Include the message schema -->
          <xsd:include schemaLocation="../schema/ebRS/rs.xsd"/>
        </xsd:schema>
        <!-- While no elements are directly used from these schema in the WSDL,
          they need to be present here in order for
          code generating toolkits to work properly -->
        <xsd:schema elementFormDefault="qualified"
          targetNamespace="urn:oasis:names:tc:ebxml-regrep:xsd:lcm:3.0"
          xmlns:lcm="urn:oasis:names:tc:ebxml-regrep:xsd:lcm:3.0">
          <!-- Include the message schema -->
          <xsd:include schemaLocation="../schema/ebRS/lcm.xsd"/>
        </xsd:schema>
       <xsd:schema elementFormDefault="qualified"
          targetNamespace="urn:oasis:names:tc:ebxml-regrep:xsd:rim:3.0"
          xmlns:lcm="urn:oasis:names:tc:ebxml-regrep:xsd:rim:3.0">
          <!-- Include the message schema -->
          <xsd:include schemaLocation="../schema/ebRS/rim.xsd"/>
        </xsd:schema>
      </types>
      <message name="RetrieveImagingDocumentSetRequest_Message">
        <documentation>Retrieve Imaging Document Set</documentation>
        <part name="body" element="iherad:RetrieveImagingDocumentSetRequest"/>
      </message>
      <message name="RetrieveDocumentSetResponse_Message">
        <documentation>Retrieve Document Set Response</documentation>
        <part name="body" element="ihe:RetrieveDocumentSetResponse"/>
      </message>
      <portType name="ImagingDocumentSource_PortType">
        <operation name="ImagingDocumentSource_RetrieveImagingDocumentSet">
          <input message="iherad:RetrieveImagingDocumentSetRequest_Message"
            wsaw:Action="urn:ihe:rad:xdsi-b:2009:RetrieveImagingDocumentSet"/>
          <output message="iherad:RetrieveDocumentSetResponse_Message"
            wsaw:Action="urn:ihe:iti:2007:RetrieveDocumentSetResponse"/>
        </operation>
      </portType>
      <binding name="ImagingDocumentSource_Binding" type="iherad:ImagingDocumentSource_PortType">
        <soap12:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
        <operation name="ImagingDocumentSource_RetrieveImagingDocumentSet">
          <soap12:operation soapAction="urn:ihe:rad:xdsi-b:2009:RetrieveImagingDocumentSet"/>
          <input>
            <soap12:body use="literal"/>
          </input>
          <output>
            <soap12:body use="literal"/>
          </output>
        </operation>
      </binding>
      <service name="ImagingDocumentSource_Service">
        <port name="ImagingDocumentSource_Port_Soap12" binding="iherad:ImagingDocumentSource_Binding">
          <soap12:address location="http://localhost:8080/webservice-test/ridsService"/>
        </port>
      </service>
    </definitions>
    Request:
    <soap:Envelope
    xmlns:soap="http://www.w3.org/2003/05/soap-envelope"
    xmlns:urn="urn:ihe:rad:xdsi-b:2009"
    xmlns:urn1="urn:ihe:iti:xds-b:2007"
    xmlns:a="http://www.w3.org/2005/08/addressing">
       <soap:Header>
         <a:Action soap:mustUnderstand="1">urn:ihe:rad:2009:RetrieveImagingDocumentSet</a:Action>
         <a:MessageID>urn:uuid:0fbfdced-6c01-4d09-a110-2201afedaa02</a:MessageID>
         <a:ReplyTo soap:mustUnderstand="1">
              <a:Address>http://www.w3.org/2005/08/addressing/anonymous</a:Address>
         </a:ReplyTo>
         <a:To>http://localhost:8080/webservice-test/ridsServer</a:To>
       </soap:Header>
       <soap:Body>
          <urn:RetrieveImagingDocumentSetRequest>
             <!--1 or more repetitions:-->
             <urn:StudyRequest studyInstanceUID="test1">
                <!--1 or more repetitions:-->
                <urn:SeriesRequest seriesInstanceUID="test2">
                   <!--1 or more repetitions:-->
                   <urn1:DocumentRequest>
                      <!--Optional:-->
                      <urn1:HomeCommunityId>test3</urn1:HomeCommunityId>
                      <urn1:RepositoryUniqueId>test4</urn1:RepositoryUniqueId>
                      <urn1:DocumentUniqueId>test5</urn1:DocumentUniqueId>
                   </urn1:DocumentRequest>
                </urn:SeriesRequest>
             </urn:StudyRequest>
             <urn:TransferSyntaxUIDList>
                <!--1 or more repetitions:-->
                <urn:TransferSyntaxUID>?</urn:TransferSyntaxUID>
             </urn:TransferSyntaxUIDList>
          </urn:RetrieveImagingDocumentSetRequest>
       </soap:Body>
    </soap:Envelope>
    Response (HTTP 500):
    <ns2:Fault xmlns:ns2="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns3="http://www.w3.org/2003/05/soap-envelope">
       <faultcode>ns2:Client</faultcode>
       <faultstring>Cannot find dispatch method for {http://www.w3.org/2003/05/soap-envelope}Envelope</faultstring>
    </ns2:Fault>

    I posted here to benefit anybody who is looking for a solution.
    The solution is to use WebServiceContext to get ServletContext, then use ServletContext to get parameters defined in web.xml.
    @Resource private WebServiceContext m_wsCxt;
    Then in method
    SOAPMessageContext soapCxt = (SOAPMessageContext) m_wsCxt.getMessageContext();
    ServletContext servletCxt = (ServletContext) soapCxt.get(javax.xml.ws.handler.MessageContext.SERVLET_CONTEXT);
    }

  • Web service client timeout

    Hi,
    I'm trying to set a timeout on my web service client. But its not working. Your tutorials do not seem to address this.
    I am using weblogic 10.3.2, with Java 1.6.
    ============
    Properties propSys = System.getProperties();
    propSys.put( "weblogic.webservice.UseWebLogicURLStreamHandler", "true" );
    Stub stub = (Stub)portObject;
    BindingInfo bindingInfo = (weblogic.webservice.binding.BindingInfo)stub._getProperty("weblogic.webservice.bindinginfo");
    bindingInfo.setTimeout(1);
    Iterator itr = stub._getPropertyNames();
    while (itr.hasNext()){
    Object element = itr.next();
    log("\n properties that can be set: "+element);
    stub._setProperty("weblogic.webservice.rpc.timeoutsecs","1");
    ===========
    I've also tried setting the transaction-timeout and the remove-client-timeout in the weblogic-ear-jar.xml.
    ===========
    <weblogic-ejb-jar>
    <weblogic-enterprise-bean>
    <ejb-name>ExternalEntryEJB</ejb-name>
    <transaction-descriptor>
    <trans-timeout-seconds>1</trans-timeout-seconds>
    </transaction-descriptor>
    <enable-call-by-reference>True</enable-call-by-reference>
    <jndi-name>ExternalEntry</jndi-name>
    <remote-client-timeout>1</remote-client-timeout>
    </weblogic-enterprise-bean>
    <weblogic-enterprise-bean>
    <ejb-name>InternalEJB</ejb-name>
    <local-jndi-name>Internal</local-jndi-name>
    <enable-call-by-reference>True</enable-call-by-reference>
    <remote-client-timeout>1</remote-client-timeout>
    <transaction-descriptor>
    <trans-timeout-seconds>1</trans-timeout-seconds>
    </transaction-descriptor>
    </weblogic-enterprise-bean>
    </weblogic-ejb-jar>
    ===========
    in case it matters, I am using weblogic.ant.taskdefs.webservices.clientgen.ClientGenTask as the clientgen task in my build.xml
    ============
    <clientgen autotype="False" ear="${dist}/${app.earname}" warName="${servlet.warname}" packageName="MyPackage.webservices.client"
    keepgenerated="False" useServerTypes="True" clientJar="${dist}/MyAppClient.jar">
    <classpath refid="build.classpath.builddir"/>
    </clientgen>
    ============
    I am testing by putting a Thread.sleep(75000) in the method which is called in the internal EJB. But the method runs to completion and returns the reply object after 90 seconds or so (it normally takes about 12 seconds), but does not timeout.
    I've been told that because it is a web services client, the remote-client-timeout will be ineffective. I've also been told that because the EJBs run in the same JVM, the transaction-timeout will be ineffective. Is this so?
    Thanks,
    Walter

    Can you change the clientgen task to weblogic.wsee.tools.anttasks.ClientGenTask this is for jax-rpc 1.1.
    <taskdef name="clientgen"
    classname="weblogic.wsee.tools.anttasks.ClientGenTask" />
    ((Stub)port)._setProperty(weblogic.wsee.transport.connection.timeout,2);
    ((Stub)port)._setProperty(weblogic.wsee.transport.read.timeoutt,2);
    Hope that helps.

Maybe you are looking for