JAX-RPC handler example

Hi
Does anyone have any example on JAX-RPC handler method? I'm looking for one which
returns more than one attachment. My attachments in this case are images.
Thanks alot.
grazieee
ps: I'm using Weblogic workshop 8.1 sp2

Just figured it out.
Didn't realize there were separate handleRequest() and handleResponse() methods.
We must have implemented our Handler classes in a bit of a nonstandard way...we used two separate classes, put our handler functionality in the "invoke(MessageContext mc)" method, and an indicated which class handled requests and responses in the Deployment Descriptor.
Must be an "Axis" thing.
Sorry for as the inconvenience.

Similar Messages

  • Intercepting SOAP XML message in JAX-RPC Handler and calling a diff method

    Is it possible to intercept the SOAP XML message in the JAX-RPC handler and avoid the serialization and deserialization (OR avoid XML data binding)
    Here is a more detail question
    My web service has two methods
    1. One Method which accepts Java Object (this object is mapped with a Schema
    Complex Type Element in my WSDL file)
    2. Second method which accept simple String type.
    I want my web service client to send java object (using the first method), so that the Input gets validate in the WSDL itself (before it hits the actual web service) but once the request gets validated i want to pass that converted SOAP XML String (on the Server side using JAX-RPC handler) to the Second method.

    The answer to this is that the WSDL had
    elementFormDefault="qualified"
    in the schema.
    Changing to unqualified resulted in the desired output.
    Note: The service was changed to handle both cases.

  • Jax-rpc handler for certain Web methods

    Hi, all
    Is there any way to deploy a handler for certain method of the web service?
    For example, I have a web service calls testService. This testService has two methods (A and B) which can be accessed by the client. How could I specify the handler is only for method A? How the WSDD will look like?
    Thanks for your help. /dan

    Hi,
    I am facing a similar kind of problem. If maybe I could look at your wsdl and wsdd files, maybe we could come up with a solution. Also my email id is [email protected]
    Feel free to mail me and maybe we can exchange ideas. Thanks.

  • How to pass SOAP Attachments with JAX-RPC Web Service

    I'm confused...
    This sample shows how to send/receive SOAP attachments by using the JAX-RPC Handler mechanism. Can somebody confirm if this is the preferred way to do this. I've seen an example wich does something like:
      public interface AttachmentService extends Remote {
        public String storeDocumentService(javax.activation.DataHandler dh, String filename) throws RemoteException;
      }and then uses JAX-RPC utilities to create wsdl, stubs and stuff. Does this have the same result, as what the OTN example shows (from an architecture perspective?
    Thx,
    Jan.

    Well, how an attachment is processed depends on your application logic...if your application logic requires to processing attachments and verify it before processing the SOAP message, handlers could be better option.
    If you need to process the attachment while processing the SOAP message, you can do it in the service implementation class.
    In both the cases you need to get access to SOAPMessage object and from there get the attachments with getAttachments method.

  • Is JAX-RPC compatible with Apache Axis?

    We are starting a new project, and our design goal is to develop server-side API that is the exposed via Web Services. The goal is to have them run within the Sun Reference Implementation, and within Apache Axis.
    My question is, if we develop to the JAX-RPC Specification, with occasional SAAJ calls for attachment processing, will our Web Services run within Apache Axis? In other words, it Apache Axis JAX-RPC and SAAJ-compatible?

    It seems that the way they handle Attachments is different. Apache Axis seems to have its own way of handling Attachments, even though it is possible that they also support the standard JAX-RPC way.
    Generally speaking, I am not very happy with how JAX-RPC handles attachments, but this is a different subject.

  • How to generate a soapFault from jax-rpc hander

    Hello,
    I'm building a custom authentication jax-rpc handler (OAS 10.1.3.1) that is supposed to make the service to return a fault if some conditions are not met.
    Here is what we need to return:
    <Fault><faultcode>invalidIP</faultcode><faultstring>IP is not known</faultstring><faultactor></faultactor></Fault>
    I tried to throw a SOAPFaultException, but all the is returned back is the original SOAP request.
    How should it be implemented?
    if ( !res ) {
    Detail detail = null;
    try{
    detail = SOAPFactory.newInstance().createDetail();
    }catch(SOAPException ex){
    ex.printStackTrace();
    throw new javax.xml.rpc.soap.SOAPFaultException(
    new javax.xml.namespace.QName("env.Server"),
    "IP is not known", "NO ACTOR", detail);
    }

    Hello ,
    I think you need to use the Work item Change set
    cube of TFS .You need to go through the below page
    http://msdn.microsoft.com/en-us/library/ms244678.aspx
    Ahsan Kabir Please remember to click Mark as Answer and Vote as Helpful on posts that help you. This can be beneficial to other community members reading the thread. http://www.aktechforum.blogspot.com/

  • JAX-RPC Client Handler

    Hi All,
    I am trying to get a simple example client handler to work using JAX-RPC DII.
    The web serivice is a simple one that just returns Hello + name..
    Here is the client code:
    public class Main {
         * @param args the command line arguments
        private static String BODY_NAMESPACE_VALUE = "http://helloservice/";
        private static String NS_XSD = "http://www.w3.org/2001/XMLSchema";
        private static String ENCODING_STYLE_PROPERTY = "javax.xml.rpc.encodingstyle.namespace.uri";
        private static String URI_ENCODING ="http://schemas.xmlsoap.org/soap/encoding/";
        public static void main(String[] args) {
            try {
                     String url ="http://localhost:8080/HelloService/MyHelloService";
                     QName serviceName   = new QName(BODY_NAMESPACE_VALUE,"MyHelloServiceService");
                     QName portTypeName = new QName(BODY_NAMESPACE_VALUE, "MyHelloServicePort");
                     ServiceFactory factory = ServiceFactory.newInstance();
                     Service service = factory.createService(serviceName);
                     Call call = service.createCall();
                     call.setPortTypeName(portTypeName);
                     call.setOperationName(new QName(BODY_NAMESPACE_VALUE, "sayHello"));
                     call.setTargetEndpointAddress(url);
                     call.setProperty(ENCODING_STYLE_PROPERTY,"");
                     //call.setProperty(ENCODING_STYLE_PROPERTY,URI_ENCODING);
                     call.setProperty(Call.OPERATION_STYLE_PROPERTY, "rpc");
                     QName QNAME_TYPE_STRING = new QName(NS_XSD, "string");
                     call.setReturnType(QNAME_TYPE_STRING);
                     call.addParameter("name", QNAME_TYPE_STRING, ParameterMode.IN);
                     String[] params = { "Murph!" };
                     HandlerRegistry hr = service.getHandlerRegistry();
                     List<HandlerInfo> list = new ArrayList<HandlerInfo>();
                     HandlerInfo hi = new HandlerInfo(ClientSOAPHandler1.class, null,null);
                     list.add(hi);
                     HandlerInfo hi2 = new HandlerInfo(ClientLogicalHandler1.class, null,null);
                     list.add(hi2);
                     hr.setHandlerChain(portTypeName, list);
                     String result = (String)call.invoke(params);
                     System.out.println(result);
            } catch (ServiceException e)
                e.printStackTrace();
            catch (RemoteException e)
                e.printStackTrace();
    }And the code for the Handlers:
    public class ClientSOAPHandler1 extends ClientSOAPHandlerBase
        private final String HANDLERNAME="ClientSOAPHandler1";
        public ClientSOAPHandler1(){
           super();
           super.setHandlerName(HANDLERNAME);
    import javax.xml.transform.Source;
    import java.util.Set;
    import java.util.TreeSet;
    import javax.annotation.PreDestroy;
    import javax.annotation.PostConstruct;
    import javax.xml.namespace.QName;
    import javax.xml.ws.handler.MessageContext;
    import javax.xml.ws.handler.soap.SOAPHandler;
    import javax.xml.ws.handler.soap.SOAPMessageContext;
    import javax.xml.soap.SOAPMessage;
    import java.io.ByteArrayOutputStream;
    public class ClientSOAPHandlerBase implements SOAPHandler<SOAPMessageContext>
        private String handlerName=null;
        public void setHandlerName(String h) {
            this.handlerName=h;
        public String getHandlerName() {
            return this.handlerName;
        @PostConstruct
        public void myInit() {
            System.out.println("------------------------------------");
            System.out.println("in "+handlerName+":myInit");
            System.out.println("exiting "+handlerName+":myInit");
            System.out.println("------------------------------------");
        @PreDestroy
        public void myDestroy() {
            System.out.println("------------------------------------");
            System.out.println("in "+handlerName+":myDestroy");
            System.out.println("exiting "+handlerName+":myDestroy");
            System.out.println("------------------------------------");
        public Set<QName> getHeaders() {
            return new TreeSet<QName>();
        public boolean handleMessage(SOAPMessageContext context) {
            System.out.println("------------------------------------");
            System.out.println("in "+handlerName+":handleMessage");
            boolean direction= ((Boolean)context.get(SOAPMessageContext.MESSAGE_OUTBOUND_PROPERTY)).booleanValue();
            if (direction) {
                System.out.println("direction = outbound");
            } else {
                System.out.println("direction = inbound");
            dumpMsg(context);
            System.out.println("exiting "+handlerName+":handleMessage");
            System.out.println("------------------------------------");
            return true;
        public void close(MessageContext context) {
            System.out.println("------------------------------------");
            System.out.println("in "+handlerName+":close");
            System.out.println("exiting "+handlerName+":close");
            System.out.println("------------------------------------");
        public boolean handleFault(SOAPMessageContext context) {
            System.out.println("------------------------------------");
            System.out.println("in "+handlerName+":handleFault");
            System.out.println("exiting "+handlerName+":handleFault");
            System.out.println("------------------------------------");
            return true;
        public void dumpMsg(MessageContext context) {
           try {
              SOAPMessage soapmsg = ((SOAPMessageContext)context).getMessage();
              System.out.println("MSG="+getMsgAsString(soapmsg));
           } catch (Exception e) {
               e.printStackTrace();
           return;
        public String getMsgAsString(SOAPMessage message) {
            String msg  = null;
            try {
                ByteArrayOutputStream baos = new ByteArrayOutputStream();
                message.writeTo(baos);
                msg = baos.toString();
            } catch (Exception e) {
                e.printStackTrace();
            return msg;
    }The output is as follows:
    run:
    Hello Murph!
    BUILD SUCCESSFUL (total time: 1 second)
    This should print out the various println statements in the Handler, but it doesnt :(- How come? What am I missing?
    I have searched everywhere trying to find the proper way to get a client side handler to work and have had luck. Additionally, I really really need this to work....if anyone could provide help, it would be VERY appreciated...pretty please
    Thanks,
    Daniel

    Any Ideas Anyone?????

  • [Beginner] Help! How to change the packet name for an jax-rpc example

    Hi
    I am new to the JWSDP, I tried to build and deploy the helloservice application (the example in
    tutorial), it works fine. But I want to change the packet name from helloservice to books, it
    returns error message during the building process.
    Here is what I did.
    I changed the folder name from helloservice to books.
    In helloIF.java and helloImp1.java, changed to "package books"
    In build.properties:
    example=books
    war.path=${tut.root}/examples/jaxrpc/books/${dist}/${deployable.war}
    context.path=${hello.context}
    portable.war=${context.path}-portable.war
    deployable.war=${context.path}.war
    In jaxrpc-ri.xml,
    <?xml version="1.0" encoding="UTF-8"?>
    <webServices
    xmlns="http://java.sun.com/xml/ns/jax-rpc/ri/dd"
    version="1.0"
    targetNamespaceBase="urn:foo"
    typeNamespaceBase="urn:foo"
    urlPatternBase="/ws">
    <endpoint
    name="MyHello"
    displayName="HelloWorld Service"
    description="A simple web service"
    interface="books.HelloIF"
    model="/WEB-INF/model.gz"
    implementation="books.HelloImpl"/>
    <endpointMapping
    endpointName="MyHello"
    urlPattern="/hello"/>
    </webServices>
    In config-interface.xml,
    <?xml version="1.0" encoding="UTF-8"?>
    <configuration
    xmlns="http://java.sun.com/xml/ns/jax-rpc/ri/config">
    <service
    name="MyHelloservice"
    targetNamespace="urn:foo"
    typeNamespace="urn:foo"
    packageName="books">
    <interface name="books.HelloIF"/>
    </service>
    </configuration>
    When I run "ant build", it returns the following error message:
    run-wscompile:
    [echo] Running wscompile:
    [echo] C:\jwsdp-1.3\apache-ant\../jaxrpc/bin/wscompile.bat -define -d bui
    ld -nd build -classpath build config-interface.xml -model build/mo
    del.gz
    [exec] error parsing configuration file: XML parsing error: com.sun.xml.rpc
    .sp.ParseException:1: com.sun.xml.rpc.sp/P-067
    [exec] Result: 1
    All I want to do is just change the packet name, anyone know how to do it?
    Please help me.
    Thank you.

    For future reference, please post JAXRPC related questions to [email protected]
    There is something syntatically wrong with your config.xml. Try reverting back to the original, and try that. Then try modifying it again making sure to only change the packageName.

  • Cannot Run JAX-RPC Hello Service Example

    Hello,
    I am trying to run the helloservice example from the Java Web Services Tutorial v 1.3 (Chapter 12). Upon running the ant build task, I get the following error.
    BUILD FAILED
    file:C:/jwstutorial13/examples/jaxrpc/common/targets.xml:151: Warning: Could not
    find file C:\jwstutorial13\examples\jaxrpc\helloservice\build\model.gz to copy.
    I tried running the ant generate-sei-service task separately. This appears to complete successfully, yet, there is no model file generated.
    Any help/suggestions/insights would be very much appreciated!
    Thanks,
    Sheila

    Thanks!
    I did that before posting my original message. I'm obviously missing something (noting jumps out at me, as far as being wrong.)
    My files look like this:
    File: build.xml (C:\jwstutorial13\examples\jaxrpc\helloservice\build.xml)
    <!DOCTYPE project [
    <!ENTITY jaxrpctargets SYSTEM "../common/targets.xml">
    ]>
    <project name="jaxrpc-tutorial" default="build" basedir=".">
    <property file="../../common/build.properties"/>
    <property file="../common/build.properties"/>
    <property file="build.properties"/>
    &jaxrpctargets;
    <target name="build" depends="build-service"
    description="Executes the targets needed to build the service.">
    </target>
    </project>
    ==================================================================================
    File: build.properties (C:\jwstutorial13\examples\jaxrpc\helloservice\build.properties).
    example=helloservice
    war.path=${tut.root}/examples/jaxrpc/helloservice/${dist}/${deployable.war}
    context.path=${hello.context}
    portable.war=${context.path}-portable.war
    deployable.war=${context.path}.war
    ==================================================================================
    File: build.properties (C:\jwstutorial13\examples\jaxrpc\common\build.properties)
    # This file contains properties common to the tutorial examples
    # for JAX-RPC.
    # tut.root=C:/wspack-docs
    tut.root=${tutorial.install}
    hello.context=hello-jaxrpc
    secure.context=secure-jaxrpc
    mutualauth.context=secure-mutualauth
    url.pattern=/hello
    key.store=${tutorial.home}/jwstutorial13/examples/jaxrpc/mutualauth/keystore.jks
    key.store.password=changeit
    trust.store=${tutorial.home}/jwstutorial13/examples/jaxrpc/mutualauth/cacerts.jks
    trust.store.password=changeit
    hello.endpoint=http://${host}:${port}/${hello.context}${url.pattern}
    secure.endpoint=http://${host}:${port}/${secure.context}${url.pattern}
    mutualauth.endpoint=https://${host}:${secure.port}/${mutualauth.context}${url.pattern}
    build=build
    src=src
    dist=dist
    client.jar=client.jar
    model.file=model.gz
    config.wsdl.file=config-wsdl.xml
    config.interface.file=config-interface.xml
    jwsdp.shared=${jwsdp.home}/jwsdp-shared
    jaxp.home=${jwsdp.home}/jaxp
    jaxrpc.home=${jwsdp.home}/jaxrpc
    saaj.home=${jwsdp.home}/saaj
    wscompile.dir=${jaxrpc.home}/bin
    wsdeploy.dir=${jaxrpc.home}/bin
    javamail.jar=${jwsdp.shared}/lib/mail.jar
    jaf.jar=${jwsdp.shared}/lib/activation.jar
    jaxp-api.jar=${jaxp.home}/lib/jaxp-api.jar
    dom.jar=${jaxp.home}/lib/endorsed/dom.jar
    sax.jar=${jaxp.home}/lib/endorsed/sax.jar
    xalan.jar=${jaxp.home}/lib/endorsed/xalan.jar
    xercesImpl.jar=${jaxp.home}/lib/endorsed/xercesImpl.jar
    jaxrpc-api.jar=${jaxrpc.home}/lib/jaxrpc-api.jar
    jaxrpc-impl.jar=${jaxrpc.home}/lib/jaxrpc-impl.jar
    jaxrpc-spi.jar=${jaxrpc.home}/lib/jaxrpc-spi.jar
    commons-logging.jar=${jwsdp.shared}/lib/commons-logging.jar
    saaj-api.jar=${saaj.home}/lib/saaj-api.jar
    saaj-impl.jar=${saaj.home}/lib/saaj-impl.jar
    relaxngDatatype.jar=${jwsdp.shared}/lib/relaxngDatatype.jar
    xsdlib.jar=${jwsdp.shared}/lib/xsdlib.jar
    jax-qname.jar=${jwsdp.shared}/lib/jax-qname.jar
    ant.jar=${jwsdp.home}/apache-ant/lib/ant.jar
    ==================================================================================
    This is where I thought the problem might be, but I can't determine what's wrong. The pathelements in this file, were set in build.properties ((C:\jwstutorial13\examples\jaxrpc\common\build.properties), referenced above.
    File: targets.xml (C:\jwstutorial13\examples\jaxrpc\common\targets.xml)
    <!-- targets.xml: Referenced by the build.xml files, this file
    contains targets common to all of the jaxrpc examples. -->
    <path id="compile.classpath">
    <pathelement location="${javamail.jar}"/>
    <pathelement location="${jaf.jar}"/>
    <pathelement location="${jaxp-api.jar}"/>
    <pathelement location="${dom.jar}"/>
    <pathelement location="${sax.jar}"/>
    <pathelement location="${xalan.jar}"/>
    <pathelement location="${xercesImpl.jar}"/>
    <pathelement location="${jaxrpc-api.jar}"/>
    <pathelement location="${jaxrpc-impl.jar}"/>
    <pathelement location="${jaxrpc-spi.jar}"/>
    <pathelement location="${commons-logging.jar}"/>
    <pathelement location="${saaj-api.jar}"/>
    <pathelement location="${saaj-impl.jar}"/>
    <pathelement location="${relaxngDatatype.jar}"/>
    <pathelement location="${xsdlib.jar}"/>
    <pathelement location="${jax-qname.jar}"/>
    <pathelement location="${ant.jar}"/>
    <pathelement location="${build}/shared"/>
    </path>
    <path id="run.classpath">
    <path refid="compile.classpath"/>
    <pathelement location="${dist}/${client.jar}"/>
    </path>
    <taskdef name="deploy" classname="org.apache.catalina.ant.DeployTask" />
    <taskdef name="undeploy" classname="org.apache.catalina.ant.UndeployTask" />
    <taskdef name="list" classname="org.apache.catalina.ant.ListTask" />
    <taskdef name="start" classname="org.apache.catalina.ant.StartTask" />
    <taskdef name="stop" classname="org.apache.catalina.ant.StopTask" />
    <taskdef name="install" classname="org.apache.catalina.ant.InstallTask"/>
    <taskdef name="reload" classname="org.apache.catalina.ant.ReloadTask"/>
    <taskdef name="remove" classname="org.apache.catalina.ant.RemoveTask"/>     
    <target name="install" description="Install web application"
    depends="build">
    <install url="${url}" username="${username}" password="${password}"
    path="/${context.path}" war="file:${example.path}/${build}"/>
    </target>
    <target name="deploy"
    description="Deploys a Web application">
    <deploy url="${url}" username="${username}" password="${password}"
    path="/${context.path}" war="file:${war.path}"
    />
    </target>
    <target name="undeploy"
    description="Undeploys a Web application">
    <undeploy url="${url}" username="${username}" password="${password}"
    path="/${context.path}"
    />
    </target>
    <target name="redeploy"
    description="Undeploys and deploys a Web aplication">
    <antcall target="undeploy" />
    <antcall target="deploy" />
    </target>
    <target name="list"
    description="Lists Web applications">
    <echo message="Listing the applications...."/>
    <list
    url="${url}"
    username="${username}"
    password="${password}"
    />
    </target>
    <target name="start"
    description="Starts a Web application">
    <echo message="Starting the application...."/>
    <start
    url="${url}"
    username="${username}"
    password="${password}"
    path="/${context.path}"
    />
    </target>
    <target name="stop"
    description="Stops a Web application">
    <echo message="Stopping the application...."/>
    <stop
    url="${url}"
    username="${username}"
    password="${password}"
    path="/${context.path}"
    />
    </target>
    <target name="prepare"
    description="Creates the build directory" >
    <echo message="Creating the required directories...." />
    <mkdir dir="${build}/${example}" />
    </target>
    <target name="prepare-dist"
    description="Creates the dist directory" >
    <echo message="Creating the required directories...." />
    <mkdir dir="${dist}" />
    </target>
    <target name="set-wscompile" >
    <condition property="wscompile" value="${wscompile.dir}/wscompile.bat">
    <os family="windows"/>
    </condition>
    <condition property="wscompile" value="${wscompile.dir}/wscompile.sh">
    <not>
    <os family="windows"/>
    </not>
    </condition>
    </target>
    <target name="set-wsdeploy" >
    <condition property="wsdeploy" value="${wsdeploy.dir}/wsdeploy.bat">
    <os family="windows"/>
    </condition>
    <condition property="wsdeploy" value="${wsdeploy.dir}/wsdeploy.sh">
    <not>
    <os family="windows"/>
    </not>
    </condition>
    </target>
    <target name="compile-service" depends="prepare"
    description="Compiles the server-side source code">
    <echo message="Compiling the server-side source code...."/>
    <javac srcdir="${src}"
    destdir="${build}"
    includes="*.java"
    excludes="*Client.java">
    <classpath refid="compile.classpath"/>
    </javac>
    </target>
    <target name="setup-web-inf"
    description="Copies files to build/WEB-INF">
    <echo message="Setting up ${build}/WEB-INF...."/>
    <delete dir="${build}/WEB-INF" />
    <copy todir="${build}/WEB-INF/classes/${example}">
    <fileset dir="${build}/${example}" />
    <fileset dir="${build}/${example}" />
    </copy>
    <copy file="${build}/${model.file}" todir="${build}/WEB-INF" />
    <copy file="web.xml" todir="${build}/WEB-INF" />
    <copy file="jaxrpc-ri.xml" todir="${build}/WEB-INF" />
    </target>
    <target name="package-service" depends="prepare-dist"
    description="Packages the WAR file">
    <echo message="Packaging the WAR...."/>
    <delete file="${dist}/${portable.war}" />
    <jar jarfile="${dist}/${portable.war}" >
    <fileset dir="${build}" includes="WEB-INF/**" />
    </jar>
    </target>
    <target name="process-war" depends="set-wsdeploy"
    description="Runs wsdeploy to generate the ties and
    create a deployable WAR file">
    <delete file="dist/${deployable.war}" />
    <antcall target="run-wsdeploy">
    <param name="param1" value="-o dist/${deployable.war} dist/${portable.war}"/>
    </antcall>
    </target>
    <target name="run-wscompile" depends="prepare,set-wscompile"
    description="Runs wscompile">
    <echo message="Running wscompile:"/>
    <echo message=" ${wscompile} ${param1}"/>
    <exec executable="${wscompile}">
    <arg line="${param1}"/>
    </exec>
    </target>
    <target name="run-wsdeploy" depends="prepare,set-wsdeploy"
    description="Runs wsdeploy">
    <echo message="Running wsdeploy:"/>
    <echo message=" ${wsdeploy} ${param1}"/>
    <exec executable="${wsdeploy}">
    <arg line="${param1}"/>
    </exec>
    </target>
    <target name="generate-sei-service"
    description="Runs wscompile to generate the model file">
    <antcall target="run-wscompile">
    <param name="param1" value="-define -d ${build} -nd ${build}
    -classpath ${build} ${config.interface.file}
    -model ${build}/${model.file}"/>
    </antcall>
    <delete file="${build}/MyHelloService.wsdl"/>
    </target>
    <target name="generate-interface"
    description="Runs wscompile to generate the service endpoint
    interface">
    <antcall target="run-wscompile">
    <param name="param1" value="-import -d ${build} -nd ${build}
    -f:norpcstructures -classpath ${build} ${config.wsdl.file}"/>
    </antcall>
    </target>
    <target name="generate-stubs"
    description="Runs wscompile to generate the client stub classes">
    <antcall target="run-wscompile">
    <param name="param1" value="-gen:client -d ${build}
    -classpath ${build} ${config.wsdl.file}"/>
    </antcall>
    </target>
    <target name="compile-client" depends="prepare"
    description="Compiles the client-side source code" >
    <echo message="Compiling the client source code...."/>
    <javac srcdir="${src}"
    destdir="${build}"
    includes="*.java">
    <classpath refid="compile.classpath"/>
    <classpath path="${build}" />
    </javac>
    </target>
    <target name="package-client" depends="prepare-dist"
    description="Builds the JAR file that contains the client">
    <echo message="Building the client JAR file...."/>
    <delete file="${dist}/${client.jar}" />
    <jar jarfile="${dist}/${client.jar}" >
    <fileset dir="${build}" />
    </jar>
    </target>
    <target name="package-dynamic" depends="prepare-dist"
    description="Builds the JAR file that contains the dynamic proxy client">
    <echo message="Building the client JAR file...."/>
    <delete file="${dist}/${client.jar}" />
    <jar jarfile="${dist}/${client.jar}" >
    <fileset dir="${build}" includes="**/HelloClient.class" />
    <fileset dir="${build}" includes="**/HelloIF.class" />
    </jar>
    </target>
    <target name="build-service" depends="clean,compile-service,generate-sei-service,
    setup-web-inf,package-service,process-war"
    description="Executes the targets needed to build the service.">
    </target>
    <target name="build-static" depends="clean,generate-stubs,
    compile-client,package-client"
    description="Executes the targets needed to build a static stub client.">
    </target>
    <target name="build-dii" depends="clean,prepare,compile-client,package-client"
    description="Executes the targets needed to build a DII client.">
    </target>
    <target name="build-dynamic" depends="clean,prepare,generate-interface,
    compile-client,package-dynamic"
    description="Executes the targets needed to build a dynamic proxy client.">
    </target>
    <target name="build-webclient" depends="clean,generate-stubs"
    description="Executes the targets needed to build a web client.">
    </target>
    <target name="run-client"
    description="Runs a stand-alone (non-J2EE) client">
    <java classname="${client.class}" fork="yes" >
    <arg line="${endpoint.address}" />
    <classpath refid="run.classpath" />
    </java>
    </target>
    <target name="run-secure-client"
    description="Runs a client with basic authentication over SSL">
    <java classname="${client.class}" fork="yes" >
    <arg line="${username} ${password} ${endpoint.address}" />
    <classpath refid="run.classpath" />
    </java>
    </target>
    <target name="run-mutualauth-client"
    description="Runs a client with mutual authentication over SSL">
    <java classname="${client.class}" fork="yes" >
    <arg line="${key.store} ${key.store.password}
    ${trust.store} ${trust.store.password}
    ${endpoint.address}" />
    <classpath refid="run.classpath" />
    </java>
    </target>
    <target name="clean"
    description="Removes the build directory">
    <delete dir="${build}" />
    </target>
    <target name="listprops" depends="set-wscompile"
    description="Displays values of some of the properties of this
    build file">
    <echo message="jaxrpc.home = ${jaxrpc.home}" />
    <echo message="wscompile = ${wscompile}" />
    <echo message="build = ${build}" />
    <echo message="src = ${src}" />
    <echo message="dist = ${dist}" />
    <echo message=" " />
    <echo message="example = ${example}" />
    <echo message="client.jar = ${client.jar}" />
    <echo message="client.class = ${client.class}" />
    <echo message=" " />
    <echo message="host = ${host}" />
    <echo message="port = ${port}" />
    <echo message="secure.port = ${secure.port}" />
    <echo message="trust.store = ${trust.store}" />
    <echo message="trust.store.password = ${trust.store.password}" />
    <echo message=" " />
    <echo message="username = ${username}" />
    <echo message="password = ${password}" />
    <echo message="url = ${url}" />
    <echo message=" " />
    <echo message="context.path = ${context.path}" />
    <echo message="secure.context.path = ${secure.context.path}" />
    <echo message="url.pattern = ${url.pattern}" />
    <echo message="endpoint.address = ${endpoint.address}" />
    <echo message="secure.endpoint = ${secure.endpoint}" />
    <echo message=" " />
    <echo message="war.path = ${war.path}" />
    <echo message="portable.war = ${portable.war}" />
    <echo message="deployable.war = ${deployable.war}" />
    </target>
    ==================================================================================
    File: targets.xml ( C:\jwstutorial13\examples\common\targets.xml)
    <taskdef name="list" classname="org.apache.catalina.ant.ListTask"/>
    <taskdef name="install" classname="org.apache.catalina.ant.InstallTask"/>
    <taskdef name="reload" classname="org.apache.catalina.ant.ReloadTask"/>
    <taskdef name="remove" classname="org.apache.catalina.ant.RemoveTask"/>     
    <taskdef name="deploy" classname="org.apache.catalina.ant.DeployTask"/>     
    <taskdef name="undeploy" classname="org.apache.catalina.ant.UndeployTask"/>     
    <target name="list" description="List web applications" >
    <list url="${url}" username="${username}" password="${password}" />
    </target>
    <target name="install" description="Install web application"
    depends="build">
    <install url="${url}" username="${username}" password="${password}"
    path="/${context.path}" war="file:${build}"/>
    </target>
    <target name="reload" description="Reload web application"
    depends="build">
    <reload url="${url}" username="${username}" password="${password}"
    path="/${context.path}"/>
    </target>
    <target name="remove" description="Remove web application">
    <remove url="${url}" username="${username}" password="${password}"
    path="/${context.path}"/>
    </target>
    <target name="package"
    description="Packages the WAR file">
    <echo message="Packaging the WAR...."/>
    <delete file="dist/${war.file}" />
    <jar jarfile="dist/${war.file}" >
    <fileset dir="${build}" />
    </jar>
    </target>
    <target name="deploy" description="Deploy a Web application">
    <deploy url="${url}" username="${username}" password="${password}"
    path="/${context.path}" war="file:/${example.path}/dist/${war.file}"
    />
    </target>
    <!--<target name="deploy" description="Deploy a Web application">
    <deploy url="${url}" username="${username}" password="${password}"
    path="/${context.path}" war="file:/${example.path}/dist/${war.file}"
    />
    </target> -->
    <target name="undeploy" description="Undeploy web application">
    <undeploy url="${url}" username="${username}" password="${password}"
    path="/${context.path}"/>
    </target>
    ==================================================================================
    File: build.properties (C:\jwstutorial13\examples\common\build.properties)
    tutorial.home=C:/jwstutorial13
    tutorial.install=${tutorial.home}
    username=******
    password=********
    host=localhost
    port=8080
    secure.port=8443
    url=http://${host}:${port}/manager
    ==================================================================================
    Finally, here is how I've got my PATH Environmental Variable Set:
    PATH:
    %JWSDP_HOME%\apache-ant\bin;%JWSDP_HOME%\jwsdp-shared\bin;%JWSDP_HOME%\bin;%JAVA_HOME%\bin;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\system32\WBEM;C:\Program Files\Microsoft SQL Server\80\Tools\Binn\
    I set this up according to the instructions at the beginning of the tutorial.
    JWSDP_HOME: C:\jwsdp-1.3
    JAVA_HOME: C:\j2sdk1.4.1_05
    Thanks again for your help.
    Sheila

  • Handling Dates in JAX RPC Webservices

    Im converting an old application over to the JAX RPC webservices. We have a situation where the server and the client use the same bean jar file. When I connect up to my webservice the beans it dumps out have XMLGregorianCalendar as their datatype, if I try to feed this back to use this in the webservice, I have all sorts of issues for one, it's not serializable. So, how should I handle dates that I need to have the same datatype on the client and server?

    Hi.
    check following hope you will help
    http://blogs.oracle.com/wssi/entry/introduction_to_oracle_web_services

  • Help install jwsdp 1.0 and run JAX-RPC  example

    I installed jwsdp1.0 today and I tried to run the Hello world example for JAX-RPC (http://java.sun.com/webservices/docs/1.0/tutorial/doc/JAXRPC3.html).
    The problem is with any command passed at the console (ant command or startup (tomcat), deploytool, etc) I always get the following message : Exception in thread "main" java.lang.NoClassDefFoundError: Files/Microsoft.
    The operating system in win XP and jre is 1.4.0.
    The variables I used are JAVA_HOME (D:\Java\j2sdk1.4.0)
    and JWSPD_HOME (d:\java\jwsdp-1_0). Both bin folder are setup on the path variable (%JAVA_HOME%\bin;%JWSPD_HOME%\bin).
    Help will be very much appreciated

    Maybe this is just a typo in your post, but the variable name should be JWSDP_HOME, not JWSPD_HOME.
    Mike

  • Get login name JAX-RPC

    Hello
    I am using Java EE 5 and Glassfish.
    Currently I am developing an application using JAX-RPC (1.4 style). This is NOT JAX-WS or older tech where everything had to be done "by hand". its something of a halfbreed invented at the time.
    I have a service that looks something like the example, although much more complicated :)
    package samples.webservices.jaxrpc.simple;
    public class HelloImpl implements HelloIF {
        public String message = "Hello ";
        public String sayHello(String s) {
            return message + s;
    }The IF class interface extends Remote
    I would like to get the currently authenticated users user name for the specific RPC call. In older versions it was simple because you needed to deal with the SOAP envelope anyway and in JAX-WS it seems equally simple. but in the version I am using it seems straight out impossible to get the MessageContext or similar.
    Can anyone please help me? I have read an awful lot of web pages without finding the answer.
    Thanks in advance
    / Stefan

    Ok after much reading, thinking and testing I was able to solve the problem (not very pretty but hopefully working).
    Create an extra soap handler old school way
    public class MySOAPHandler extends GenericHandler {
       public boolean handleRequest(MessageContext context) {
               Object o = context.getProperty("com.sun.xml.rpc.server.http.HttpServletRequest");
                if ( o != null ) {
                     currentuser = ((HttpServletRequest)o).getRemoteUser();
    }Then register this in webservicese.xml
           <handler>
               <handler-name>My SOAP Handler</handler-name>
               <handler-class>full.class.path.MySOAPHandler</handler-class>
          </handler>      Hope this helps someone else out there :)

  • Jax-rpc and xsd x:any/

    I am using JAX-RPC to build a client for a web service. Some of the operations on the web service include an <x:any/> element in the response. JAX-RPC generates a corresponding javax.xml.soap.SOAPElement for each of the elements defined as <x:any/>.
    The web service operation, that I am building the client for, is truly generic. It takes in a parameter that is a sql query string and so the respones for the web service could and will be many different sizes and shapes. I'm curious if there are any frameworks that will aid in my handling of the SOAPElement objects. I am currently the JAX-RPC that comes with apache AXIS 1.3 for the web service client.
    Does JAX-RPC or AXIS provide functionality for handling the SOAPElements so that I do not have to write code for each custom query that may be invoked on this web service? I would prefer handIe this in a more generic and abstracted manner. I realize that I can traverse the SOAPElement, but this seems very ugly.
    Are there examples of how this is usually done.?

    Thanks. I am using Hibernate as well. Unfortunately, I did not develop the web service itself and are only tasked with invoking it. We have no control over how the web service is defined or developed. So, I am forced to deal with the SOAPEnvelope. Any insight as to frameworks that will help parse the SOAPEnvelope would be appeciated

  • Batch operations with JAX-RPC

    I have read a number of different tutorials about Web services and JAX-RPC, and have to come the conclusion that JAX-RPC is the correct approach to use for my project. Most of the examples I have seen involve invoking services which perform a 'one-shot' action e.g. get a Stock Quote.
    My first question is that I am not sure for such 'one-shot' services, how much support there is in the API for sending/receiving arrays of data items. e.g. sending a user's data to a web service which includes an associated list of phone numbers.
    Further if I wanted to send user's data which included an array of nested objects, would I have to implement a serializer/deserialiser plugin?
    My main concern really is how best to handle a batch of requests to the service. My current thought is to use JAX-RPC with an xml document attachment - listing of a number of user's data and their parameters. A 'batch service' would return a response immediately then work through the document and invoke the existing 'single shot' service - which will be hosted on the same web server.
    Is this approach which brings together a number of different ideas from the various JAX-RPC tutorials viable? Are they any better alternatives?
    For example would it be better to implement a JAX-RPC for the single shot service requests and use JAXM for batch service requests? (On the server-side I would still be expecting the batch service to re-use the single-shot service). Can JAXM and JAX-RPC services co-exist on the same web server? I realise that there would be WSDL generated for the JAX-RPC service alone and so for a client developer there will be an inconsistency in terms of how the Web service is accessed.
    Thanks in anticipation

    Hello, I'll try and go through your questions one at a time:
    My first question is that I am not sure for such 'one-shot' services, how much support there is in the API for
    sending/receiving arrays of data items. e.g. sending a user's data to a web service which includes an
    associated list of phone numbers.JAX-RPC has built in support for List type operations. There is no problem sending Arrays of information over the wire. If you were sending an Object of type User, for instance, there would be no problem with User having a List of PhoneNumber types objects as part of it's structure.
    Further if I wanted to send user's data which included an array of nested objects, would I have to implement
    a serializer/deserialiser plugin?Condintional No. If the nested objects contained only data structures that JAX-RPC knows how to deal with, your fine (things like java.lang.String or java.lang.Integer). However, if your nested objects contain types that JAX-RPC does not know how to deal with (i.e. java.sql.TimeStamp), you will have to write a custom serializer/deserializer just like you would if you were passing those objects without them being nested.
    My main concern really is how best to handle a batch of requests to the service. My current thought is to
    use JAX-RPC with an xml document attachment - listing of a number of user's data and their parameters.
    A 'batch service' would return a response immediately then work through the document and invoke the
    existing 'single shot' service - which will be hosted on the same web server.
    Is this approach which brings together a number of different ideas from the various JAX-RPC tutorials
    viable? Are they any better alternatives?As per above you shouldn't have to send an xml document attachment, but I guess you could. Also, for batch processing type tasks you probably want to look at the asychronous mode mentioned in the JAX-RPC part of the JWSDP tutorial.
    For example would it be better to implement a JAX-RPC for the single shot service requests and use
    JAXM for batch service requests? (On the server-side I would still be expecting the batch service to re-use
    the single-shot service). Can JAXM and JAX-RPC services co-exist on the same web server? I realise
    that there would be WSDL generated for the JAX-RPC service alone and so for a client developer there
    will be an inconsistency in terms of how the Web service is accessed.Well, it really is up to you at this point. I assume that you want/need to use web services for access (as opposed to EJBs or any other method). So, I would look at an asychronous web service implementation.

  • JDeveloper JAX-RPC vs AXIS

    Hi everybody,
    I find that working with Axis and it's tools (wsdl2java) is easier than working with Oracle's SOAP implementation(webservicesassembler.jar).
    One advantadge of using oracle's solution is that ws that
    returns an Element type does not need a custom deserializer and Axis needs.
    Which more advantages do you think oracle's solution has?
    Why should we use jDev10's JAX/RPC web services?
    Thank you.

    Hello
    The first thing is you should really say "JAX-RPC vs AXIS", since both of them are Web Services Runtime/Development APIs. And Jdeveloper is just a tools that simnplifies the development and developmen of Web Services using JAX-RPC.
    So what about JAX-RPC vs Axis?
    I would say that Axis is/was a de-facto standard fro developing WS, since it is running in most of the application servers - OracleAS 10g included-. Where JAX-RPC is the standard defines by the Java Community Process (JCP) and is a mandatory features of J2EE 1.4 specifications. So by using JAX-RPC you will be able to use a set of API that are really standard based. Also as part of your decision you should take a look in more details about the services provided by JAX-RPC: http://java.sun.com/xml/jaxrpc/index.jsp and the different standards involved.
    Also I think that one important thing to take in consideration when you will make your decision is the future of Axis as we know it today release 1.0 If you see the Axis 2.0 Web site, it says that:
    "Axis2 is an effort to re-design and totally re-implement both Axis/Java and (eventually) Axis/C++ on a new architecture."
    Other considerations:
    Some of the important things to watch when you select your framework are also related to:
    - how you can interop with other framework (consuming or providing a service that is created with another stack)
    - how to handle attachement (size, types, performances, ..)
    When you will start to use Web Services in your system you may need to add different quality of services for example adding security (authentication, encryption, ...) or reliability (how I can be sure that my response has been received by my client application)
    All the Web Service Management (security, reliability, etc etc) is not currently well integrated in the Axis stack, so you will have to use a third party solution to have this type of features. (you can for example use Oracle Web Services Manager for that purpose)
    All these, and more, are more than just the 'SOAP' stack.
    Oracle, JAX-RPC, and more:
    First of all OC4J 10.1.3 support JAX-RPC as any J2EE 1.4, in addition we support WS-Security, WS-Reliability to integrate them to your enterprise, and a full integration with Oracle Web Services Manager.
    Oracle JAX-RPC implementation has also specific focus to ensure interoperability firs WS-Interoperability compliant -[url=http://www.ws-i.org/]WS-I is an open organization that defines the interoperability around WS.- services, but also based on 'real life validation scenarios' -especially with .Net- where we use our customer applications to validate our platform interoperability.
    Also, on the tooling side, our Web Services stack is fully integrated to Oracle JDevelope that allow you to develop easily JAX-RPC base Web Services (client or provider), based on several type of object/business logic (simple Java class, EJB, PL/SQL, SQL, ...); and deploy them very quickly to your application server
    Regards
    Tugdual Grall

Maybe you are looking for