Does any one have a sample code for calling an Axis Web service from a JSP page?

Interesting thing is:

Same code when I tried on Tomcat 3 gives me the following exception:
Internal Servlet Error:

java.lang.IllegalStateException: Response has already been
committed
        at
java.lang.Throwable.fillInStackTrace(Native Method)
        at
java.lang.Throwable.fillInStackTrace(Compiled Code)
        at
java.lang.Throwable.(Compiled Code)
        at
java.lang.Exception.(Compiled Code)
        at
java.lang.RuntimeException.(Compiled Code)
        at
java.lang.IllegalStateException.(Compiled Code)
        at
org.apache.tomcat.core.HttpServletResponseFacade.sendError(Compiled
Code)
:
:
-Sri
At 01:05 PM 5/13/2005, you wrote:
Michael,

I checked the HttpClient and understood what you meant. So, it should be working with my web app on the same Tomcat.

As it shows in the RootCouse:

root cause

java.lang.LinkageError: loader constraints violated when linking
javax/xml/soap/SOAPMessage class
        at
org.apache.axis.client.Call.<init>(Call.java:263)
        at
org.apache.axis.client.Service.createCall(Service.java:566)

I started using a simple JSP page but still my Call.init is failing.

-Sri

At 10:18 AM 5/13/2005, you wrote:
Michael,

Thanks for your reply.

I just started calling the web service in the .jsp file.
Here is my client code from .jsp file:

<%
String endpoint =
"http://localhost:8080/bserv/services/EmployeeDataService";

String[] args = {"getEmployeeLateTSDataArray", "22624", "8524"};
String method = args[0];
String arg1 = args[1];;
String arg2 = args[2];;
Service service =
new Service();
Call call =
null;
QName qname =
null;
Class cls =
null;

qname =
new QName("EmployeeLateTSArray", "EmployeeLateTSBean");
TypeMappingRegistry tmr = service.getTypeMappingRegistry();
TypeMapping tmlts = tmr.createTypeMapping();
try {
  tmlts.register(
    Class.forName(
"com.bbn.ws.EmployeeLateTSBean"),
    qname,
    new org.apache.axis.encoding.ser.BeanSerializerFactory(EmployeeLateTSBean.class,qname),
    new org.apache.axis.encoding.ser.BeanDeserializerFactory(EmployeeLateTSBean.class,qname));
  }
catch (ClassNotFoundException e1) {
    e1.printStackTrace();
  }
tmr.register(
"http://schemas.xmlsoap.org/soap/encoding/", tmlts);

qname =
new QName("EmployeeLateTSArray", "EmployeeLateTSBeanArray");
call = (Call) service.createCall();
call.setReturnType (qname);
try {
  call.setTargetEndpointAddress(
new java.net.URL(endpoint));
}
catch (MalformedURLException e2) {
  e2.printStackTrace();
}
call.setOperationName(method);
call.addParameter(
"admnum", XMLType.XSD_INTEGER, ParameterMode.IN);
call.addParameter(
"mgrnum", XMLType.XSD_INTEGER, ParameterMode.IN);
call.setReturnType(qname);
System.out.println(
"Called method: " + method + "(" + arg1 + "," + arg2 + ")");
EmployeeLateTSBean e[] = (EmployeeLateTSBean[])call.invoke(
new Object[] { new Integer(arg1), new Integer(arg2) });
%>
<%= e[0].toString(); %>

I will look into using HttpClient as you suggested.

Thanks again,
Sri

At 05:47 PM 5/12/2005, Michael Oliver wrote:
Sri,

Its hard to tell what you are doing because we don't see any of the
source, but I can tell you that I use commons HttpClient to access one
servlet from another servlet all day long with no problems so you can at
least know that should work.

Michael Oliver
CTO
Alarius Systems LLC
6800 E. Lake Mead Blvd, #1096
Las Vegas, NV 89156
Phone:(702)643-7425
Fax:(702)974-0341
*Note new email changed from [EMAIL PROTECTED]

Reply via email to