You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-user@axis.apache.org by Soactive Inc <so...@gmail.com> on 2005/04/23 22:02:48 UTC
ProxyService implementation Issues (Axis 1.2RC3)
Environment: Apache Tomcat 5.0.24, JDK 1.4.2, Apache Axis 1.2RC3
I am using the ProxyService provided in the samples package as a
starting point for implementing my own ProxyService class that would
act as a proxy for web services. Using this design, I am able to
connect to some services that happen to reside on the same axis server
as the proxy service but having some issues when I try to connect to
external services - e.g. http://www.xignite.com/xInsider.asmx?WSDL.
Please note that the client seems to be working just fine (simply
change binding address in the code to the endpoint URL) if I bypass
the proxy. The exception I am getting indicates that its not even
reaching the endpoint (note 404 error) - I did ensure that I am able
to manually access the URL for both the service address as well as the
WSDL file. Any pointers to resolving this issue is much appreciated.
I am first appending the exception I am getting and then the rest of my code.
Thanks,
-Arun
****************************************************************************************
EXCEPTION
****************************************************************************************
##### Printing Request Message....
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="htt
p://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><soap
env:Body><ns1:GetOfficers
soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/
" xmlns:ns1="http://www.xignite.com/services/"><IssuerIdentifier
xsi:type="xsd:string">IBM
</IssuerIdentifier><IssuerIdentifierType
xsi:type="xsd:string">Symbol</IssuerIdentifierTyp
e></ns1:GetOfficers></soapenv:Body></soapenv:Envelope>##### Request
URL: http://localhost:
8080/axis/services/ProxyService
AxisFault
faultCode: {http://xml.apache.org/axis/}HTTP
faultSubcode:
faultString: (404)Object Not Found
faultActor:
faultNode:
faultDetail:
{}string:return code: 404
<html><head><title>Site Not Found</title></head>
<body>No web site is configured at this address.</body></html>
{http://xml.apache.org/axis/}HttpErrorCode:404
(404)Object Not Found
at org.apache.axis.message.SOAPFaultBuilder.createFault(SOAPFaultBuilder.java:221)
at org.apache.axis.message.SOAPFaultBuilder.endElement(SOAPFaultBuilder.java:128)
at org.apache.axis.encoding.DeserializationContext.endElement(DeserializationConte
xt.java:1077)
at org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown
Source)
at org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanEndElement(Unknown
Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher
.dispatch(Unknown Source)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown
Sour
ce)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
at javax.xml.parsers.SAXParser.parse(Unknown Source)
at org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.ja
va:225)
at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:645)
at org.apache.axis.Message.getSOAPEnvelope(Message.java:424)
at org.apache.axis.handlers.soap.MustUnderstandChecker.invoke(MustUnderstandChecke
r.java:62)
at org.apache.axis.client.AxisClient.invoke(AxisClient.java:173)
at org.apache.axis.client.Call.invokeEngine(Call.java:2737)
at org.apache.axis.client.Call.invoke(Call.java:2720)
at org.apache.axis.client.Call.invoke(Call.java:2396)
at org.apache.axis.client.Call.invoke(Call.java:2319)
at org.apache.axis.client.Call.invoke(Call.java:1776)
at org.apache.jsp.jsp.admin.ServiceDetail_jsp.invokeXigniteService(ServiceDetail_j
sp.java:340)
at org.apache.jsp.jsp.admin.ServiceDetail_jsp._jspService(ServiceDetail_jsp.java:5
02)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:298)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFil
terChain.java:237)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain
.java:157)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.jav
a:703)
at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.
java:589)
at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.ja
va:499)
at org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:966)
at org.apache.jasper.runtime.PageContextImpl.include(PageContextImpl.java:581)
at org.apache.struts.tiles.TilesUtilImpl.doInclude(TilesUtilImpl.java:137)
at org.apache.struts.tiles.TilesUtil.doInclude(TilesUtil.java:177)
at org.apache.struts.taglib.tiles.InsertTag.doInclude(InsertTag.java:756)
at org.apache.struts.taglib.tiles.InsertTag$InsertHandler.doEndTag(InsertTag.java:
881)
at org.apache.struts.taglib.tiles.InsertTag.doEndTag(InsertTag.java:473)
at
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:298)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFil
terChain.java:237)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain
.java:157)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.jav
a:703)
at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispat
cher.java:463)
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.
java:398)
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.ja
va:312)
at org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1069)
at org.apache.struts.tiles.TilesRequestProcessor.doForward(TilesRequestProcessor.j
ava:274)
at org.apache.struts.tiles.TilesRequestProcessor.processTilesDefinition(TilesReque
stProcessor.java:254)
at org.apache.struts.tiles.TilesRequestProcessor.processForwardConfig(TilesRequest
Processor.java:309)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:279)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1480)
at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:506)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:697)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFil
terChain.java:237)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain
.java:157)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:
214)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.j
ava:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextVal
ve.java:198)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:
152)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.j
ava:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.j
ava:104)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.j
ava:102)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:10
9)
at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.j
ava:104)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:793)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnecti
on(Http11Protocol.java:702)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:571)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:6
44)
at java.lang.Thread.run(Thread.java:536)
****************************************************************************************
ProxyService.java
****************************************************************************************
/*
* Copyright 2001-2004 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import org.apache.axis.AxisFault;
import org.apache.axis.Message;
import org.apache.axis.MessageContext;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.apache.axis.message.SOAPEnvelope;
import org.apache.axis.transport.http.HTTPConstants;
import javax.servlet.http.HttpServletRequest;
import javax.xml.soap.SOAPMessage;
import java.net.URL;
public class ProxyService {
/**
* Process the given message, treating it as raw XML.
*/
public void proxyService(SOAPEnvelope env1, SOAPEnvelope env2)
throws AxisFault {
try {
// Get the current Message Context
MessageContext context = MessageContext.getCurrentContext();
System.out.println("##### Printing Request Message....");
SOAPMessage message = context.getMessage();
message.writeTo(System.out);
HttpServletRequest servletRequest =
(HttpServletRequest)
context.getProperty(HTTPConstants.MC_HTTP_SERVLETREQUEST);
System.out.println("##### Request URL: " +
servletRequest.getRequestURL());
Service service = new Service();
Call call = (Call) service.createCall();
// NOW set the client's URL
call.setTargetEndpointAddress(new
URL("http://www.xignite.com/xInsider.asmx?WSDL"));
call.setProperty(Call.SOAPACTION_USE_PROPERTY, new Boolean(true));
call.setProperty(Call.SOAPACTION_URI_PROPERTY,
"http://www.xignite.com/services/GetOfficers");
call.setRequestMessage((Message) message);
call.invoke();
Message responseMessage = call.getResponseMessage();
System.out.println("##### Printing Response Message....");
responseMessage.writeTo(System.out);
context.setResponseMessage(responseMessage);
} catch (Exception exp) {
throw AxisFault.makeFault(exp);
}
}
}
****************************************************************************************
Client code
****************************************************************************************
// this method can be called from any program
public static String invokeXigniteService(String requestStr)
throws Exception {
System.setProperty("javax.xml.soap.MessageFactory",
"org.apache.axis.soap.MessageFactoryImpl");
System.setProperty("javax.xml.soap.SOAPConnectionFactory",
"org.apache.axis.soap.SOAPConnectionFactoryImpl");
// create service factory
ServiceFactory factory = ServiceFactory.newInstance();
// define qnames
String targetNamespace = "http://www.xignite.com/services/";
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(org.apache.axis.Constants.XSD_STRING);
call.setReturnType(new QName(targetNamespace, "Roster"), Roster.class);
call.setReturnQName(new QName("", "GetOfficersResult"));
// register type mapping
call.registerTypeMapping(Roster.class, new QName(targetNamespace,
"Roster"), BeanSerializerFactory.class,
BeanDeserializerFactory.class);
call.registerTypeMapping(Address.class, new QName(targetNamespace,
"Address"), BeanSerializerFactory.class,
BeanDeserializerFactory.class);
call.registerTypeMapping(Security.class, new QName(targetNamespace,
"Security"), BeanSerializerFactory.class,
BeanDeserializerFactory.class);
call.registerTypeMapping(OutcomeTypes.class, new
QName(targetNamespace, "OutcomeTypes"), BeanSerializerFactory.class,
BeanDeserializerFactory.class);
call.registerTypeMapping(Role.class, new QName(targetNamespace,
"Role"), BeanSerializerFactory.class, BeanDeserializerFactory.class);
call.registerTypeMapping(Common.class, new QName(targetNamespace,
"Common"), BeanSerializerFactory.class,
BeanDeserializerFactory.class);
call.registerTypeMapping(Role[].class, new QName(targetNamespace,
"ArrayOfRole"), ArraySerializerFactory.class,
ArrayDeserializerFactory.class);
// set end point address
call.setTargetEndpointAddress("http://localhost:8080/axis/services/ProxyService");
//call.setTargetEndpointAddress("http://www.xignite.com/xInsider.asmx");
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;
}
Re: ProxyService implementation Issues (Axis 1.2RC3)
Posted by Soactive Inc <so...@gmail.com>.
One correction to my previous post - the line of code that sets the
endpoint service address must be:
call.setTargetEndpointAddress(new URL("http://www.xignite.com/xInsider.asmx"));
and NOT
call.setTargetEndpointAddress(new
URL("http://www.xignite.com/xInsider.asmx?WSDL"));
However, the error is still the same as my previous post.
Thanks in advance,
-Arun
On 4/23/05, Soactive Inc <so...@gmail.com> wrote:
> Environment: Apache Tomcat 5.0.24, JDK 1.4.2, Apache Axis 1.2RC3
>
> I am using the ProxyService provided in the samples package as a
> starting point for implementing my own ProxyService class that would
> act as a proxy for web services. Using this design, I am able to
> connect to some services that happen to reside on the same axis server
> as the proxy service but having some issues when I try to connect to
> external services - e.g. http://www.xignite.com/xInsider.asmx?WSDL.
> Please note that the client seems to be working just fine (simply
> change binding address in the code to the endpoint URL) if I bypass
> the proxy. The exception I am getting indicates that its not even
> reaching the endpoint (note 404 error) - I did ensure that I am able
> to manually access the URL for both the service address as well as the
> WSDL file. Any pointers to resolving this issue is much appreciated.
>
> I am first appending the exception I am getting and then the rest of my code.
>
> Thanks,
> -Arun
>
> ****************************************************************************************
> EXCEPTION
> ****************************************************************************************
>
> ##### Printing Request Message....
> <?xml version="1.0" encoding="UTF-8"?>
> <soapenv:Envelope
> xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
> xmlns:xsd="htt
> p://www.w3.org/2001/XMLSchema"
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><soap
> env:Body><ns1:GetOfficers
> soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/
> " xmlns:ns1="http://www.xignite.com/services/"><IssuerIdentifier
> xsi:type="xsd:string">IBM
> </IssuerIdentifier><IssuerIdentifierType
> xsi:type="xsd:string">Symbol</IssuerIdentifierTyp
> e></ns1:GetOfficers></soapenv:Body></soapenv:Envelope>##### Request
> URL: http://localhost:
> 8080/axis/services/ProxyService
> AxisFault
> faultCode: {http://xml.apache.org/axis/}HTTP
> faultSubcode:
> faultString: (404)Object Not Found
> faultActor:
> faultNode:
> faultDetail:
> {}string:return code: 404
> <html><head><title>Site Not Found</title></head>
> <body>No web site is configured at this address.</body></html>
> {http://xml.apache.org/axis/}HttpErrorCode:404
>
> (404)Object Not Found
> at org.apache.axis.message.SOAPFaultBuilder.createFault(SOAPFaultBuilder.java:221)
>
> at org.apache.axis.message.SOAPFaultBuilder.endElement(SOAPFaultBuilder.java:128)
> at org.apache.axis.encoding.DeserializationContext.endElement(DeserializationConte
> xt.java:1077)
> at org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown
> Source)
> at org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanEndElement(Unknown
> Source)
> at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher
> .dispatch(Unknown Source)
> at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown
> Sour
> ce)
> at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
> at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
> at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
> at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
> at javax.xml.parsers.SAXParser.parse(Unknown Source)
> at org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.ja
> va:225)
> at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:645)
> at org.apache.axis.Message.getSOAPEnvelope(Message.java:424)
> at org.apache.axis.handlers.soap.MustUnderstandChecker.invoke(MustUnderstandChecke
> r.java:62)
> at org.apache.axis.client.AxisClient.invoke(AxisClient.java:173)
> at org.apache.axis.client.Call.invokeEngine(Call.java:2737)
> at org.apache.axis.client.Call.invoke(Call.java:2720)
> at org.apache.axis.client.Call.invoke(Call.java:2396)
> at org.apache.axis.client.Call.invoke(Call.java:2319)
> at org.apache.axis.client.Call.invoke(Call.java:1776)
> at org.apache.jsp.jsp.admin.ServiceDetail_jsp.invokeXigniteService(ServiceDetail_j
> sp.java:340)
> at org.apache.jsp.jsp.admin.ServiceDetail_jsp._jspService(ServiceDetail_jsp.java:5
> 02)
> at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
> at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:298)
>
> at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
> at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
> at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFil
> terChain.java:237)
> at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain
> .java:157)
> at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.jav
> a:703)
> at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.
> java:589)
> at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.ja
> va:499)
> at org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:966)
>
> at org.apache.jasper.runtime.PageContextImpl.include(PageContextImpl.java:581)
> at org.apache.struts.tiles.TilesUtilImpl.doInclude(TilesUtilImpl.java:137)
> at org.apache.struts.tiles.TilesUtil.doInclude(TilesUtil.java:177)
> at org.apache.struts.taglib.tiles.InsertTag.doInclude(InsertTag.java:756)
> at org.apache.struts.taglib.tiles.InsertTag$InsertHandler.doEndTag(InsertTag.java:
> 881)
> at org.apache.struts.taglib.tiles.InsertTag.doEndTag(InsertTag.java:473)
> at
> at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
> at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:298)
>
> at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
> at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
> at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFil
> terChain.java:237)
> at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain
> .java:157)
> at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.jav
> a:703)
> at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispat
> cher.java:463)
> at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.
> java:398)
> at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.ja
> va:312)
> at org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1069)
>
> at org.apache.struts.tiles.TilesRequestProcessor.doForward(TilesRequestProcessor.j
> ava:274)
> at org.apache.struts.tiles.TilesRequestProcessor.processTilesDefinition(TilesReque
> stProcessor.java:254)
> at org.apache.struts.tiles.TilesRequestProcessor.processForwardConfig(TilesRequest
> Processor.java:309)
> at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:279)
> at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1480)
> at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:506)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:697)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
> at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFil
> terChain.java:237)
> at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain
> .java:157)
> at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:
> 214)
> at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.j
> ava:104)
> at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
> at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextVal
> ve.java:198)
> at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:
> 152)
> at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.j
> ava:104)
> at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
> at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137)
> at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.j
> ava:104)
> at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
> at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.j
> ava:102)
> at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
> at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:10
> 9)
> at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.j
> ava:104)
> at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520)
> at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929)
> at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160)
> at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:793)
> at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnecti
> on(Http11Protocol.java:702)
> at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:571)
> at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:6
> 44)
> at java.lang.Thread.run(Thread.java:536)
>
> ****************************************************************************************
> ProxyService.java
> ****************************************************************************************
> /*
> * Copyright 2001-2004 The Apache Software Foundation.
> *
> * Licensed under the Apache License, Version 2.0 (the "License");
> * you may not use this file except in compliance with the License.
> * You may obtain a copy of the License at
> *
> * http://www.apache.org/licenses/LICENSE-2.0
> *
> * Unless required by applicable law or agreed to in writing, software
> * distributed under the License is distributed on an "AS IS" BASIS,
> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
> * See the License for the specific language governing permissions and
> * limitations under the License.
> */
>
> import org.apache.axis.AxisFault;
> import org.apache.axis.Message;
> import org.apache.axis.MessageContext;
> import org.apache.axis.client.Call;
> import org.apache.axis.client.Service;
> import org.apache.axis.message.SOAPEnvelope;
> import org.apache.axis.transport.http.HTTPConstants;
>
> import javax.servlet.http.HttpServletRequest;
> import javax.xml.soap.SOAPMessage;
> import java.net.URL;
>
> public class ProxyService {
> /**
> * Process the given message, treating it as raw XML.
> */
> public void proxyService(SOAPEnvelope env1, SOAPEnvelope env2)
> throws AxisFault {
> try {
> // Get the current Message Context
> MessageContext context = MessageContext.getCurrentContext();
>
> System.out.println("##### Printing Request Message....");
> SOAPMessage message = context.getMessage();
> message.writeTo(System.out);
>
> HttpServletRequest servletRequest =
> (HttpServletRequest)
> context.getProperty(HTTPConstants.MC_HTTP_SERVLETREQUEST);
> System.out.println("##### Request URL: " +
> servletRequest.getRequestURL());
>
> Service service = new Service();
> Call call = (Call) service.createCall();
>
> // NOW set the client's URL
> call.setTargetEndpointAddress(new
> URL("http://www.xignite.com/xInsider.asmx?WSDL"));
> call.setProperty(Call.SOAPACTION_USE_PROPERTY, new Boolean(true));
> call.setProperty(Call.SOAPACTION_URI_PROPERTY,
> "http://www.xignite.com/services/GetOfficers");
> call.setRequestMessage((Message) message);
>
> call.invoke();
>
> Message responseMessage = call.getResponseMessage();
> System.out.println("##### Printing Response Message....");
> responseMessage.writeTo(System.out);
>
> context.setResponseMessage(responseMessage);
>
> } catch (Exception exp) {
> throw AxisFault.makeFault(exp);
> }
> }
> }
>
> ****************************************************************************************
> Client code
> ****************************************************************************************
>
> // this method can be called from any program
> public static String invokeXigniteService(String requestStr)
> throws Exception {
>
> System.setProperty("javax.xml.soap.MessageFactory",
> "org.apache.axis.soap.MessageFactoryImpl");
> System.setProperty("javax.xml.soap.SOAPConnectionFactory",
> "org.apache.axis.soap.SOAPConnectionFactoryImpl");
>
> // create service factory
> ServiceFactory factory = ServiceFactory.newInstance();
>
> // define qnames
> String targetNamespace = "http://www.xignite.com/services/";
> 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(org.apache.axis.Constants.XSD_STRING);
> call.setReturnType(new QName(targetNamespace, "Roster"), Roster.class);
> call.setReturnQName(new QName("", "GetOfficersResult"));
>
> // register type mapping
> call.registerTypeMapping(Roster.class, new QName(targetNamespace,
> "Roster"), BeanSerializerFactory.class,
> BeanDeserializerFactory.class);
> call.registerTypeMapping(Address.class, new QName(targetNamespace,
> "Address"), BeanSerializerFactory.class,
> BeanDeserializerFactory.class);
> call.registerTypeMapping(Security.class, new QName(targetNamespace,
> "Security"), BeanSerializerFactory.class,
> BeanDeserializerFactory.class);
> call.registerTypeMapping(OutcomeTypes.class, new
> QName(targetNamespace, "OutcomeTypes"), BeanSerializerFactory.class,
> BeanDeserializerFactory.class);
> call.registerTypeMapping(Role.class, new QName(targetNamespace,
> "Role"), BeanSerializerFactory.class, BeanDeserializerFactory.class);
> call.registerTypeMapping(Common.class, new QName(targetNamespace,
> "Common"), BeanSerializerFactory.class,
> BeanDeserializerFactory.class);
> call.registerTypeMapping(Role[].class, new QName(targetNamespace,
> "ArrayOfRole"), ArraySerializerFactory.class,
> ArrayDeserializerFactory.class);
>
> // set end point address
> call.setTargetEndpointAddress("http://localhost:8080/axis/services/ProxyService");
> //call.setTargetEndpointAddress("http://www.xignite.com/xInsider.asmx");
>
> 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;
> }
>