JSP Example (can be applied to other applications on other platforms as well). The main thing to note is the line:

    call.setTargetEndpointAddress("http://<gridscope_server_host_name>:8080/axis/services/ServiceGateway");

 

<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>

<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>

<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>

 

<%@ page import="com.gridscope.samples.serviceinterface.SampleAxisService" %>

<%@ page import="com.gridscope.samples.serviceinterface.EchoHeaders" %>

<%@ page import="com.gridscope.samples.serviceinterface.GoogleSearchService" %>

<%@ page import="com.gridscope.samples.googleapi.*" %>

<%@ page import="com.gridscope.samples.xInsider.*" %>

<%@ page import="com.gridscope.samples.serviceinterface.XigniteServices" %>

<%@ page import="com.gridscope.samples.businessobject.Item" %>

<%@ page import="com.gridscope.samples.businessobject.Order" %>

<%@ page import="org.apache.axis.encoding.ser.*" %>

 

<%@ page import="org.apache.axis.client.Call" %>

<%@ page import="org.apache.axis.client.Service" %>

<%@ page import="javax.xml.rpc.ParameterMode" %>

<%@ page import="javax.xml.namespace.QName" %>

<%@ page import="java.util.*" %>

 

<html:html locale="true">

 

<head>

<title>Service Detail</title>

<html:base/>

</head>

<body bgcolor="white">

 

<h3>Service Detail</h3>

<html:errors />

 

<%

   /*

    * This code will generate a list of objects from the

    * database and place a reference to this list in the

    * request object.

    *

    */

       String serviceInterfaceName = null;

       String requestStr = null;

       String resultStr = null;

 

       try {

 

              serviceInterfaceName = (String) request.getParameter("name");

 

               

              requestStr = "GridScope - The Dynamic SOA Framework Company"; // init

              if(serviceInterfaceName.equals("SampleAxisServiceService"))

                     resultStr = invokeSampleAxisService(requestStr);

              if(serviceInterfaceName.equals("EchoHeaders"))

                     resultStr = invokeEchoHeaders(requestStr);

              if(serviceInterfaceName.equals("GoogleSearchService")) {

                     requestStr = "Dynamic SOA";

                     resultStr = invokeGoogleSearchService("Dynamic SOA");

              }

              if(serviceInterfaceName.equals("XigniteInsider")) {

                     requestStr = "IBM";

                     resultStr = invokeXigniteService(requestStr);

              }

       } catch (Exception e) {

            e.printStackTrace();

        }

%>

 

<%!

 

    public static String invokeGoogleSearchService(String requestStr) throws Exception {

 

        // define qnames

        String targetNamespace = "urn:GoogleSearch";

        String schemaNamespace = "urn:GoogleSearch";

 

        QName serviceName = new QName(targetNamespace, "GoogleSearchService");

 

        QName portName = new QName(targetNamespace, "GoogleSearchPort");

        QName operationName = new QName(schemaNamespace, "doGoogleSearch");

 

        // create service

        Service service = new Service();

        Call call = (Call) service.createCall();

 

        // set port and operation name

        call.setPortTypeName(portName);

        call.setOperationName(operationName);

 

        QName strQName = new QName("http://www.w3.org/2001/XMLSchema",  "string");

        QName intQName = new QName("http://www.w3.org/2001/XMLSchema",  "int");

        QName boolQName = new QName("http://www.w3.org/2001/XMLSchema",  "boolean");

 

        call.addParameter("key", strQName, ParameterMode.IN);

        call.addParameter("q", strQName, ParameterMode.IN);

        call.addParameter("start", intQName, ParameterMode.IN);

        call.addParameter("maxResults", intQName, ParameterMode.IN);

        call.addParameter("filter", boolQName, ParameterMode.IN);

        call.addParameter("restrict", strQName, ParameterMode.IN);

        call.addParameter("safeSearch", boolQName, ParameterMode.IN);

        call.addParameter("lr", strQName, ParameterMode.IN);

        call.addParameter("ie", strQName, ParameterMode.IN);

        call.addParameter("oe", strQName, ParameterMode.IN);

 

        // return type

       call.setReturnType(org.apache.axis.Constants.XSD_STRING);

       call.setReturnType(new QName("urn:GoogleSearch", "GoogleSearchResult"), GoogleSearchResult.class);

       call.setReturnQName(new QName("", "return"));

 

       // register type mapping

       call.registerTypeMapping(GoogleSearchResult.class, new QName("urn:GoogleSearch", "GoogleSearchResult"), BeanSerializerFactory.class, BeanDeserializerFactory.class);

       call.registerTypeMapping(DirectoryCategory.class, new QName("urn:GoogleSearch", "DirectoryCategory"), BeanSerializerFactory.class, BeanDeserializerFactory.class);

       call.registerTypeMapping(ResultElement.class, new QName("urn:GoogleSearch", "ResultElement"), BeanSerializerFactory.class, BeanDeserializerFactory.class);

 

       // set end point address

        call.setTargetEndpointAddress("http://localhost:8080/axis/services/ServiceGateway");

 

       // execute

        // Invoke the WebService

        long startTimeMillis = System.currentTimeMillis();

        GoogleSearchResult result = (GoogleSearchResult) call.invoke(new Object[]{"EdkmBM5QFHLqNeePQV4tUTMRLs/aTt8h",

              requestStr, new Integer(0), new Integer(10), new Boolean(false), null, new Boolean(false),

                     null, null, null});

 

       StringBuffer resultStrBuf = new StringBuffer();

       for (int i = 0; i < result.getResultElements().length; i++) {

              ResultElement element = result.getResultElements()[i];

              resultStrBuf.append((i+1) + ": " + element.getTitle() + "<br>");

       }

        

        long endTimeMillis = System.currentTimeMillis();

 

       System.out.println("Search Query: " + requestStr + " executed in " + (endTimeMillis - startTimeMillis) + " ms");

 

       return resultStrBuf.toString();

    }

 

    public static String invokeEchoHeaders(String requestStr) throws Exception {

 

        // define qnames

        String targetNamespace = "http://localhost:8080/axis/EchoHeaders.jws";

        String schemaNamespace = "http://localhost:8080/axis/EchoHeaders.jws";

 

        QName serviceName = new QName(targetNamespace, "EchoHeadersService");

 

        QName portName = new QName(targetNamespace, "EchoHeaders");

        QName operationName = new QName(schemaNamespace, "echo");

 

        // create service

        Service service = new Service();

        Call call = (Call) service.createCall();

 

        // set port and operation name

        call.setPortTypeName(portName);

        call.setOperationName(operationName);

 

 

        // add parameters

       QName strQName = new QName("http://www.w3.org/2001/XMLSchema",  "string");

      call.addParameter("param", strQName, ParameterMode.IN);

 

        call.setReturnType(new javax.xml.namespace.QName("http://localhost:8080/axis/EchoHeaders.jws", "echoReturn"));

 

        // set end point address

        call.setTargetEndpointAddress("http://localhost:8080/axis/services/ServiceGateway");

 

        // Invoke the WebService

        long startTimeMillis = System.currentTimeMillis();

        String resultStr = (String) call.invoke(new Object[]{requestStr});

        long endTimeMillis = System.currentTimeMillis();

 

       System.out.println("Search Query: " + requestStr + " executed in " + (endTimeMillis - startTimeMillis) + " ms");

 

       System.out.println(resultStr);

 

       return resultStr;

    }

 

    public static String invokeSampleAxisService(String requestStr) throws Exception {

 

        // define qnames

        String targetNamespace = "http://localhost:8080/axis/services/SampleAxisService";

        String schemaNamespace = "http://service.samples.gridscope.com";

 

        QName serviceName = new QName(targetNamespace, "SampleAxisServiceService");

 

        QName portName = new QName(targetNamespace, "SampleAxisService");

        QName operationName = new QName(targetNamespace, "echoObject");

 

        // create service

        Service service = new Service();

        Call call = (Call) service.createCall();

 

        QName qn = new QName(targetNamespace, "Item");

        call.registerTypeMapping(Item.class, qn,

                new org.apache.axis.encoding.ser.BeanSerializerFactory

                        (Item.class, qn),

                new org.apache.axis.encoding.ser.BeanDeserializerFactory

                        (Item.class, qn));

 

        QName qnOrder = new QName(targetNamespace, "Order");

        call.registerTypeMapping(Order.class, qnOrder,

                new org.apache.axis.encoding.ser.BeanSerializerFactory

                        (Order.class, qnOrder),

                new org.apache.axis.encoding.ser.BeanDeserializerFactory

                        (Order.class, qnOrder));

 

        // set port and operation name

        call.setPortTypeName(portName);

        call.setOperationName(operationName);

 

           Item item = new Item();

           item.setId(2);

           item.setName("Porsche Boxter 800X");

           item.setDescription(requestStr);

 

        // add parameters

        call.addParameter("item", qn, ParameterMode.IN);

        call.setReturnType(new javax.xml.namespace.QName("http://localhost:8080/axis/services/SampleAxisService", "Order"));

 

        // set end point address

        call.setTargetEndpointAddress("http://localhost:8080/axis/services/ServiceGateway");

 

        // Invoke the WebService

        long startTimeMillis = System.currentTimeMillis();

        Order order = (Order) call.invoke(new Object[]{item});

        String resultStr = "echoObject : " + order.getId() + "; " + order.getName() + "; " + order.getPrice();

        long endTimeMillis = System.currentTimeMillis();

 

       System.out.println("Search Query: " + requestStr + " executed in " + (endTimeMillis - startTimeMillis) + " ms");

 

         return resultStr;

    }

 

    public static String invokeXigniteService(String requestStr) throws Exception {

 

        // define qnames

        String targetNamespace = "http://www.xignite.com/services/";

        String targetNamespace2 = "";

        String schemaNamespace = "http://www.xignite.com/services/";

 

        QName serviceName = new QName(targetNamespace, "XigniteInsider");

 

        QName portName = new QName(targetNamespace, "XigniteInsiderSoap");

        QName operationName = new QName(schemaNamespace, "GetOfficers");

 

        // create service

        Service service = new Service();

        Call call = (Call) service.createCall();

 

        // set port and operation name

        call.setPortTypeName(portName);

        call.setOperationName(operationName);

 

        QName strQName = new QName("http://www.w3.org/2001/XMLSchema",  "string");

        QName intQName = new QName("http://www.w3.org/2001/XMLSchema",  "int");

        QName boolQName = new QName("http://www.w3.org/2001/XMLSchema",  "boolean");

 

        call.addParameter("IssuerIdentifier", strQName, ParameterMode.IN);

        call.addParameter("IssuerIdentifierType", strQName, ParameterMode.IN);

 

        // return type

       call.setReturnType(new QName(targetNamespace, "Roster"), Roster.class);

       call.setReturnQName(new QName("", "GetOfficersResult"));

 

       // register type mapping

       call.registerTypeMapping(Roster.class, new QName(targetNamespace2, "Roster"), BeanSerializerFactory.class, BeanDeserializerFactory.class);

       call.registerTypeMapping(Address.class, new QName(targetNamespace2, "Address"), BeanSerializerFactory.class, BeanDeserializerFactory.class);

       call.registerTypeMapping(Security.class, new QName(targetNamespace2, "Security"), BeanSerializerFactory.class, BeanDeserializerFactory.class);

       call.registerTypeMapping(OutcomeTypes.class, new QName(targetNamespace2, "OutcomeTypes"), BeanSerializerFactory.class, BeanDeserializerFactory.class);

       call.registerTypeMapping(Role.class, new QName(targetNamespace2, "Role"), BeanSerializerFactory.class, BeanDeserializerFactory.class);

       call.registerTypeMapping(Relationship.class, new QName(targetNamespace2, "Relationship"), BeanSerializerFactory.class, BeanDeserializerFactory.class);

       call.registerTypeMapping(Common.class, new QName(targetNamespace2, "Common"), BeanSerializerFactory.class, BeanDeserializerFactory.class);

       call.registerTypeMapping(Role[].class, new QName(targetNamespace2, "ArrayOfRole"), ArraySerializerFactory.class, ArrayDeserializerFactory.class);

 

       // set end point address

        call.setTargetEndpointAddress("http://localhost:8080/axis/services/ServiceGateway");

 

       call.setProperty(call.SOAPACTION_USE_PROPERTY, new Boolean(true));

 

       call.setProperty(call.SOAPACTION_URI_PROPERTY, "http://www.xignite.com/services/GetOfficers");

 

       // execute

        // Invoke the WebService

        Roster result = (Roster) call.invoke(new Object[]{"IBM", "Symbol"});

 

       System.out.println("Search Query: " + requestStr);

 

        String resultStr = result.toString();

       System.out.println(resultStr);

 

       return resultStr;

    }

 

%>

 

<table>

<tr><td colspan="2" class="GridScopeTitleRowStyle"><b>Edit Service</td></tr>

<tr>

   <td class="GridScopeBlockCaptionStyle">Service Name</td>

   <td class="GridScopeBlockCellStyle"><%= serviceInterfaceName %></td>

</tr>

<tr>

   <td class="GridScopeBlockCaptionStyle"><b>Service Input</b></td>

   <td class="GridScopeBlockCellStyle"><%= requestStr %></td>

</tr>

<tr>

   <td class="GridScopeBlockCaptionStyle"><b>Service Response</b></td>

   <td class="GridScopeBlockCellStyle"><%= resultStr %></td>

</tr>

</table>

</body>

</html:html>