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 Dan O'Neill <do...@gmail.com> on 2005/03/01 14:24:59 UTC

Connection reset in Axis?

I'm really sorry about this email but I've hit a brick wall and can't
get past. First off I'm using Axis 1.2RC with tomcat 4.1.31.

I have a test system that communicates with a service and thats all it
does. But theres a handler thats invoked when the service is invoked.
This handler then makes a service call to a service that puts some
information into a database.

But I keep getting a connection reset?? Some people have said thats
because of a timeout. But I don't think thats what it is.
Here's my code if you can understand it.

*******************************************
Loghandler.java //The Handler!
*******************************************
package Myne;

import org.apache.axis.AxisFault;
import org.apache.axis.Handler;
import org.apache.axis.MessageContext;
import org.apache.axis.handlers.BasicHandler;
import javax.xml.rpc.ParameterMode;
import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.apache.axis.encoding.XMLType;

public class LogHandler1 extends BasicHandler {
      public void invoke(MessageContext msgContext) throws AxisFault{
        /** Log an access each time we get invoked.
        */
        try {
          Handler serviceHandler = msgContext.getService();
          String hostname = (String)getOption("hostname");
          if((hostname == null) || (hostname.equals("")))
              System.out.println("No hostname Specified");
              String endpoint = "http://localhost:8080/axis/counting.jws";
              String method = "count";
              Service  service = new Service();
              Call     call    = (Call) service.createCall();
              call.setTargetEndpointAddress( new java.net.URL(endpoint) );
              call.setOperationName( method );
              call.addParameter( "op1", XMLType.SOAP_STRING,
ParameterMode.IN );
              call.setReturnType( XMLType.SOAP_STRING );
              call.invoke( new Object [] {hostname});// This does all the work!

        } catch (Exception e) {
          throw AxisFault.makeFault(e);
        }
      }
}
*******************************************
Service//A quick service
*******************************************
package Myne;

public class Service
{
  public String testMethod(){
      return "Hi, you've reached the testMethod.";
  }
}
*******************************************
Client//A quick service
*******************************************
package Myne;

import org.apache.axis.client.Call;
import org.apache.axis.client.Service;
import org.apache.axis.utils.Options;
import javax.xml.namespace.QName;

public class Client{
  public static void main(String [] args){
      try {
          Options options = new Options(args);
          String endpointURL = options.getURL();
          Service  service = new Service();
          Call     call    = (Call) service.createCall();
          call.setTargetEndpointAddress( new java.net.URL(endpointURL) );
          call.setOperationName( new QName("TestService", "testMethod") );
          String res = (String) call.invoke( new Object[] {} );
          System.out.println( res );
      } catch (Exception e) {
          System.err.println(e.toString());
      }
  }
}

*******************************************
counting.jws//The service that does the database stuff
*******************************************
import java.sql.*;
import java.util.Date;

public class counting{
      public void count(String host)throws Exception{
              try{
                      int accesses = 0;
                      String accessS="";
                      Date date = new Date();
                      testDriver();
                      Connection con = getConnection();
                      Statement s = con.createStatement();
                      ResultSet rs = s.executeQuery("SELECT * FROM
access WHERE hostname
= "+host+"");
                      if(rs.next()==false){
                              accessS ="0";
                      }
                      else
                              accessS = (rs.getObject("counting")).toString();
                      accesses = Integer.parseInt(accessS);
                      int numAccesses = accesses+1;
                      s.execute("INSERT INTO access(hostname,Counting,lastDate)
values('"+host+"',"+numAccesses+","+date+")");
                      s.close();
              }
              catch(Exception e){
                      System.out.println("Something is wrong");
              }
      }

      protected static void testDriver() throws Exception {
      //Some database stuff
      }
      protected static Connection getConnection() throws Exception {
      //Some database stuff
      }

}

**************************************
deploy.wsdd // I might have made a mistake here?
**************************************
<deployment xmlns="http://xml.apache.org/axis/wsdd/"
          xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">

<!-- define the logging handler configuration -->
<handler name="track" type="java:Myne.LogHandler1">
<parameter name="database" value="Access"/>
<parameter name="hostname" value="http://localhost:8080/example4/service"/>
</handler>

<!-- define the service, using the log handler we just defined -->
<service name="TestService" provider="java:RPC">
<requestFlow>
 <handler type="track"/>
</requestFlow>

<parameter name="className" value="Myne.Service"/>
<parameter name="allowedMethods" value="*"/>
</service>

</deployment>
*********************************************
if there's anything else anyone needs to see please let me know? I
really have hit a brick wall. I cant go anywhere without getting this
right?

Any Help would be much appreciated!!!

Dan O'Neill