как отправить файл из апплета на сервер gwt? - PullRequest
0 голосов
/ 29 сентября 2011

Я пытаюсь отправить файл из апплета на мой сервер GWT.В другом приложении, JSF, я бы открыл HTTP-соединение с моим сервлетом.

Как мне создать сервер GWT?Я пытался вставить свой сервлет в файл web.xml, но он, кажется, игнорируется.

Мне нужно использовать RemoteService?Как я могу это сделать?

Следующий код отображения апплета и сервлета в web.xml.

URL urlDoServlet = new URL("http://192.168.3.100:8080/gwtapp/conection?action=send");    
HttpURLConnection conexaoComServlet = (HttpURLConnection) urlDoServlet.openConnection();    

conexaoComServlet.setDoOutput(true);
conexaoComServlet.setDoInput(true);
conexaoComServlet.setUseCaches(false);
conexaoComServlet.setDefaultUseCaches(false);

File doc = new File(file);
conexaoComServlet.setRequestMethod("POST");
conexaoComServlet.setRequestProperty("Content-Type", "application/octet-stream");
FileInputStream fis = new FileInputStream(doc);
BufferedInputStream bis = new BufferedInputStream(fis);

BufferedOutputStream bos = new BufferedOutputStream(conexaoComServlet.getOutputStream());
int read;
byte[] buffer = new byte[8192];
while((read = bis.read(buffer)) != -1)
{
    bos.write(buffer, 0, read);
}
bis.close();
fis.close();

bos.flush();
bos.close();

// get the answer.
ObjectInputStream ois = new ObjectInputStream(conexaoComServlet.getInputStream());
boolean bool = (Boolean) ois.readObject();
ois.close();
conexaoComServlet.getResponseMessage();
conexaoComServlet.disconnect();

<servlet>
    <servlet-name>ConectionServlet</servlet-name>
    <servlet-class>br.com.gwtapp.server.servlets.ConectionFileServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>conectionServlet</servlet-name>
    <url-pattern>/gwtapp/conection</url-pattern>
</servlet-mapping>

Ответы [ 2 ]

3 голосов
/ 29 сентября 2011

попробуйте заменить <url-pattern>/gwtapp/conection</url-pattern> на <url-pattern>/conection</url-pattern> и сообщите нам, если это работает:)

1 голос
/ 17 декабря 2011

Я нашел новую реализацию для этого с caarlos0 и raduq-santos :

public class DispatchServletModule extends ServletModule
{

    @Override
    public void configureServlets()
    {
        serveMyServlet();       
    }

    private void serveMyServlet()
    {
        serve("proj/servlet/MyServlet").with(MyServlet.class);
    }
}

и в моем апплете ...

new URL(path + "proj/servlet/MyServlet");
...