Olá,
Estou desenvolvendo um aplicativo para PDA usando HTTPClient.
O aplicativo se conecta ao servidor Tomcat para fazer o upload de
um arquivo XML.
O aplicativo funciona normalmente quando uso o Tomcat interno
do Netbeans, mas não funciona quando utilizo o Tomcat externo.
Neste caso dá o erro:
java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(SocketInputStream.java:168)
at java.io.BufferedInputStream.fill(BufferedInputStream.java:183)
at java.io.BufferedInputStream.read(BufferedInputStream.java:201)
at org.apache.commons.httpclient.HttpParser.readRawLine(HttpParser.java:78)
at org.apache.commons.httpclient.HttpParser.readLine(HttpParser.java:106)
at org.apache.commons.httpclient.HttpConnection.readLine(HttpConnection.java:1116)
at org.apache.commons.httpclient.HttpMethodBase.readStatusLine(HttpMethodBase.java:1973)
at org.apache.commons.httpclient.HttpMethodBase.readResponse(HttpMethodBase.java:1735)
at org.apache.commons.httpclient.HttpMethodBase.execute(HttpMethodBase.java:1098)
at org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry(HttpMethodDirector.java:398)
at org.apache.commons.httpclient.HttpMethodDirector.executeMethod(HttpMethodDirector.java:171)
at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:397)
at org.apache.commons.httpclient.HttpClient.executeMethod(HttpClient.java:323)
at defeitos.Upload.salvarObservacoes(Upload.java:61)
at defeitos.Inspecao.exportarObservacoesXML(Inspecao.java:1762)
at defeitos.Inspecao.actionPerformed(Inspecao.java:2092)
at java.awt.Button.processActionEvent(Button.java:382)
at java.awt.Button.processEvent(Button.java:350)
at java.awt.Component.dispatchEventImpl(Component.java:3615)
at java.awt.Component.dispatchEvent(Component.java:3477)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:480)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:145)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:137)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:100)
O aplicativo de upload é o seguinte:
import java.io.File;
import java.io.IOException;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.httpclient.methods.multipart.FilePart;
import org.apache.commons.httpclient.methods.multipart.MultipartRequestEntity;
import org.apache.commons.httpclient.methods.multipart.Part;
public class Upload
{
private int status = 0;
private String url = "http://localhost:8080/ServicoHTTP/uploadObservacoes";
private void setStatus(int s)
{
status = s;
}
public int getStatus()
{
return status;
}
public void salvarObservacoes(String nomeInsp, String statusInsp)
{
int statusExec = 0;
// Parâmetros da URL
url = url + "?inspecao=" + nomeInsp + "&status=" + statusInsp;
try
{
File arq = new File("transfer/observacoes.xml");
if (!arq.exists())
{
System.out.println("ERRO: Arquivo observacoes.xml não encontrado!");
setStatus(-1);
return;
}
PostMethod arqPost = new PostMethod(url);
Part[] parts = {
new FilePart(arq.getName(), arq)
};
arqPost.setRequestEntity(new MultipartRequestEntity(parts, arqPost.getParams()));
HttpClient client = new HttpClient();
statusExec = client.executeMethod(arqPost);
setStatus(statusExec);
}
catch(IOException e)
{
e.printStackTrace();
}
}
}
O código do servlet chamado é:
public class UploadObservacoes extends HttpServlet
{
private Utilidades util = null;
private Connection bd = null;
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
{
String fileName = null;
prepararProcessamento();
// Recuperar parâmetros
String nomeInsp = request.getParameter("inspecao");
String statInsp = request.getParameter("status");
if (ServletFileUpload.isMultipartContent(request))
{
ServletFileUpload arq = new ServletFileUpload(new DiskFileItemFactory());
List arqItems = null;
try
{
arqItems = arq.parseRequest(request);
}
catch (FileUploadException e)
{
util.mostrarErro(e);
}
String optionalFileName = "";
FileItem fileItem = null;
Iterator it = arqItems.iterator();
while (it.hasNext())
{
FileItem fileItemTemp = (FileItem)it.next();
if (fileItemTemp.isFormField())
{
String name = fileItemTemp.getFieldName();
String value = fileItemTemp.getString();
if (fileItemTemp.getFieldName().equals("filename"))
optionalFileName = fileItemTemp.getString();
}
else
fileItem = fileItemTemp;
}
if (fileItem != null)
{
fileName = fileItem.getName();
String contentType = fileItem.getContentType();
String fieldName= fileItem.getFieldName();
long fileSize = fileItem.getSize();
if (fileItem.getSize() > 0)
{
if (optionalFileName.trim().equals(""))
fileName = FilenameUtils.getName(fileName);
else
fileName = optionalFileName;
String path = request.getPathInfo();
HttpSession session = request.getSession();
String raiz = session.getServletContext().getRealPath("/");
fileName = raiz + fileName;
File saveTo = new File(fileName);
try
{
fileItem.write(saveTo);
}
catch (Exception e)
{
util.mostrarErro(e);
}
}
}
salvarObservacoesXML(fileName, nomeInsp, statInsp);
}
}
...
}
Alguem tem alguma sugestão para resolver o problema? Obrigado,
senne
