Galera, estou precisando de uma ajuda…
como faço para neste código abaixo que é meu serviço (Web Service), pegar o arquivo que esta sendo enviado pelo meu cliente (a classe UseWS e gravar este arquivo em outro local?!?!?!?!?
import java.util.Iterator;
import javax.activation.DataHandler;
import org.apache.axis.MessageContext;
import org.apache.axis.attachments.AttachmentPart;
import java.io.FileOutputStream;
/**
* @author rafael
*
*/
public class Calculator {
public int somar(int numA, int numB) {
return numA + numB;
}
public int subtrair(int numA, int numB) {
return numA - numB;
}
public int multiplicar(int numA, int numB) {
return numA * numB;
}
public int dividir(int numA, int numB) {
if (numB != 0) {
return numA / numB;
}
return 0;
}
public void gravaArquivo() {
Iterator attachment = MessageContext.getCurrentContext()
.getCurrentMessage().getAttachments();
AttachmentPart attachmentPart = (AttachmentPart) attachment.next();
try {
FileOutputStream fileOutputStream = new FileOutputStream(
"\arquivo.txt");
DataHandler dataHandler = attachmentPart.getDataHandler();
dataHandler.writeTo(fileOutputStream);
} catch (Exception e) {
// TODO Auto-generated catch block
//e.printStackTrace();
System.out.println(e);
}
}
}
cliente
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import org.apache.axis.client.Call;
import localhost.axis.Calculator_jws.Calculator;
import localhost.axis.Calculator_jws.CalculatorProxy;
import localhost.axis.Calculator_jws.CalculatorService;
import localhost.axis.Calculator_jws.CalculatorServiceLocator;
import localhost.axis.Calculator_jws.CalculatorSoapBindingStub;
/**
*
*/
/**
* @author rafael
*
*/
public class UseWS {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
CalculatorService service = new CalculatorServiceLocator();
Calculator calc = service.getCalculator();
CalculatorProxy cProxy = new CalculatorProxy();
java.net.URL endpoint = new java.net.URL(cProxy.getEndpoint());
CalculatorSoapBindingStub calculatorSoapBindingStub = new CalculatorSoapBindingStub(
endpoint, service);
DataHandler attachmentFile = new DataHandler(new FileDataSource(
"c:\Projetos\TesteWebServiceAXIS\arquivo2.txt"));
calculatorSoapBindingStub._setProperty(
Call.ATTACHMENT_ENCAPSULATION_FORMAT,
Call.ATTACHMENT_ENCAPSULATION_FORMAT_MIME);
calculatorSoapBindingStub.addAttachment(attachmentFile);
System.out.println("SOMA: " + calc.somar(2, 2));
System.out.println("SUBTRAIR: " + calc.subtrair(3, 2));
System.out.println("MULTIPLICAR: " + calc.multiplicar(2, 2));
System.out.println("DIVIDIR: " + calc.dividir(4, 2));
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
ou alguém pode me dize porque este código nao esta funcionando
ele só funciona a parte dos metodos de soma, subtracao, divisao e multiplição. o metodo de gravaArquivo() nao da resultado nenhum…
no meu console só mostra isso:
SOMA: 4
SUBTRAIR: 1
MULTIPLICAR: 4
DIVIDIR: 2
log4j:WARN No appenders could be found for logger (org.apache.axis.components.threadpool.TaskManagerFactory).
log4j:WARN Please initialize the log4j system properly.
e o arquivo a ser gravado nada
alguem pode me ajudar??