Hi Luis,

A similar service works fine for me running on Linux. 
The one thing I do differently from you is wait for
the child process to complete.  It might be worth a
try.
  
try {
  Process child = Runtime.getRuntime().exec( cmd );
  child.waitFor();
  int result = child.exitValue();
  System.out.println( "Result: " + result );
} catch ( Exception ex ) {
  System.out.println( "Exception: " + ex );
}

    Mark




--- Luis Rodrigo <[EMAIL PROTECTED]> wrote:
>       Hi all.
> 
>       I have deployed a test service, which just executes
> a command in the 
> server:
> 
>       Runtime rt = Runtime.getRuntime();
>       String[] cmd = 
>
{"cmd.exe","/c","C:\\winnt\\system32\\xcopy.exe","c:\a.txt","c:\\logs"};
>       Process proc = rt.exec(cmd);
> 
> and then returns a fixed string:
> 
>       return "This is the web service running";
> 
> 
> In the client I'm using a method to call the
> service, which is:
> 
> public static String stringCall(String endPoint,
> String 
> serviceGroup,String serviceName, String[]
> parameterNames, String[] 
> parameters){
>      String result=null;
>      try{
> 
>        Service service     = new Service();
>        Call    call        =
> (Call)service.createCall();
> 
>        call.setTargetEndpointAddress(new
> java.net.URL(endPoint));
>        call.setOperationName(new 
>
javax.xml.namespace.QName(serviceGroup,serviceName));
>        for(int i=0;i<parameters.length;i++){
>               call.addParameter(parameterNames[i], 
> XMLType.XSD_STRING,ParameterMode.IN);
>        }
>       
>
call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING);
>        System.out.println("Just before calling the
> service");
>        result=(String)call.invoke(parameters);
>        System.out.println("Service called");
>      }catch(Exception ex){
>        ex.printStackTrace();
>      }
>      System.out.println(result);
>      return result;
>    }
> 
> 
> When I try to access the service, the following
> happens. The service is 
> perfectly reached, and the xcopy command is executed
> (I get a copy of 
> the a.txt in the logs file). In the client window I
> can see the "Just 
> before calling the service" message, but in a moment
> between the
> 
>       return "This is the web service running";
> 
> line in the service and the
> 
>       result=(String)call.invoke(parameters);
> 
> line in the client, I get the following exception:
> 
> AxisFault
>   faultCode:
> {http://xml.apache.org/axis/}Server.userException
>   faultString: java.net.SocketException: Connection
> reset
>   faultActor: null
>   faultDetail:
>          stackTrace: java.net.SocketException:
> Connection reset
>          at
>
java.net.SocketInputStream.read(SocketInputStream.java:168)
>          at
>
java.io.BufferedInputStream.read1(BufferedInputStream.java:220)
>          at
>
java.io.BufferedInputStream.read(BufferedInputStream.java:277)
>          at
>
java.io.FilterInputStream.read(FilterInputStream.java:111)
>          at 
>
org.apache.xerces.utils.ChunkyByteArray.fill(ChunkyByteArray.java:222)
>          at 
>
org.apache.xerces.utils.ChunkyByteArray.&lt;init&gt;(ChunkyByteArray.java:98)
>          at 
>
org.apache.xerces.readers.DefaultReaderFactory.createReader(DefaultReaderFactory.java:153)
>          at 
>
org.apache.xerces.readers.DefaultEntityHandler.startReadingFromDocument(DefaultEntityHandler.java:493)
>          at 
>
org.apache.xerces.framework.XMLParser.parseSomeSetup(XMLParser.java:314)
>          at
>
org.apache.xerces.framework.XMLParser.parse(XMLParser.java:1097)
>          at
>
javax.xml.parsers.SAXParser.parse(SAXParser.java:345)
>          at 
>
org.apache.axis.encoding.DeserializationContextImpl.parse(DeserializationContextImpl.java:232)
>          at
>
org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:546)
>          at
>
org.apache.axis.Message.getSOAPEnvelope(Message.java:377)
>          at
>
org.apache.axis.client.Call.invokeEngine(Call.java:2132)
>          at
> org.apache.axis.client.Call.invoke(Call.java:2102)
>          at
> org.apache.axis.client.Call.invoke(Call.java:1851)
>          at
> org.apache.axis.client.Call.invoke(Call.java:1777)
>          at
> org.apache.axis.client.Call.invoke(Call.java:1315)
>          at
> clientenli.stringCall(clientenli.java:26)
>          at clientenli.main(clientenli.java:43)
> 
> 
> java.net.SocketException: Connection reset
>          at
>
org.apache.axis.AxisFault.makeFault(AxisFault.java:120)
>          at
>
org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:551)
>          at
>
org.apache.axis.Message.getSOAPEnvelope(Message.java:377)
>          at
>
org.apache.axis.client.Call.invokeEngine(Call.java:2132)
>          at
> org.apache.axis.client.Call.invoke(Call.java:2102)
>          at
> org.apache.axis.client.Call.invoke(Call.java:1851)
>          at
> org.apache.axis.client.Call.invoke(Call.java:1777)
>          at
> org.apache.axis.client.Call.invoke(Call.java:1315)
>          at
> clientenli.stringCall(clientenli.java:26)
>          at clientenli.main(clientenli.java:43)
> Caused by: java.net.SocketException: Connection
> reset
>          at
>
java.net.SocketInputStream.read(SocketInputStream.java:168)
>          at
>
java.io.BufferedInputStream.read1(BufferedInputStream.java:220)
>          at
>
java.io.BufferedInputStream.read(BufferedInputStream.java:277)
>          at
>
java.io.FilterInputStream.read(FilterInputStream.java:111)
>          at 
>
org.apache.xerces.utils.ChunkyByteArray.fill(ChunkyByteArray.java:222)
>          at 
>
org.apache.xerces.utils.ChunkyByteArray.<init>(ChunkyByteArray.java:98)
>          at 
>
org.apache.xerces.readers.DefaultReaderFactory.createReader(DefaultReaderFactory.java:153)
>          at 
>
org.apache.xerces.readers.DefaultEntityHandler.startReadingFromDocument(DefaultEntityHandler.java:493)
>          at 
>
org.apache.xerces.framework.XMLParser.parseSomeSetup(XMLParser.java:314)
>          at
>
org.apache.xerces.framework.XMLParser.parse(XMLParser.java:1097)
>          at
>
javax.xml.parsers.SAXParser.parse(SAXParser.java:345)
>          at 
>
org.apache.axis.encoding.DeserializationContextImpl.parse(DeserializationContextImpl.java:232)
>          at
>
org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:546)
>          ... 8 more
> 
> 
> I have granted Tomcat full permissions. If I do not
> try to execute the 
> xcopy, and just return the string, the service works
> fine, so I guess 
> there is some problem in the fact of executing
> commands in a service. 
> Any clues/ideas/documentation/similar experiences
> would be really 
> welcome, as I am in a hurry, and this does not seem
> very reasonable.
> 
> Thank you very much in advance.
> 
> Luis.
> 
> -- 
> |===============================================|
>    Luis Rodrigo Aguado
>    Laboratorio de Sistemas Inteligentes (ISYS)
>    Facultad de Inform�tica
>    Universidad Polit�cnica de Madrid
> |===============================================|
>    "El camino m�s largo siempre empieza con un
>     peque�o paso"
> |===============================================|
> 


__________________________________________________
Do you Yahoo!?
Yahoo! Shopping - Send Flowers for Valentine's Day
http://shopping.yahoo.com

Reply via email to