Цитата:
Сообщение от Virt
Увы java знаю на уровне junior, балуюсь для своего личного саморазвития. А так есть задача - нам передают GET запрос по HTTP мы принимаем, анализируем, кодируем данные и отправляем на другой сервер, другой протокол пакет. Как-то php для нашей задачи не подходит, т.к. есть свои нюансы в поточности асинхронного выполнения.
А почему именно HTTP, то это уже вопрос не ко мне=)
Это пол беды - мне тут недавно пришлось с русским xml с весом одной вложенности дерева в почти 1 мб. (xml был выгружен из 1C) - вот это было страшно смотреть и глаза содрогались:
PHP код:
<пользователь паспорт="" серия="" номер="">
<имущество аттр1="" аттр2="" аттр2="" />
// и т.д. большество параметров и вложенности
</пользователь>
Увы вот это реальная глупость...
|
Както-так (спойлер). Не стоит городить костыли для работы с HTTP и сокетами когда все уже есть.
P.S. Для работы с XML если структура не меняется просто сделать JAXB модель. 1Мб это не так уж и много - можно весь DOM грузить. Помню была таска обрабатывать XMLину весом в 2.4 гига с лимитом памяти - пришлось попотеть.
Свернуть ↑
Код:
import java.io.IOException;
import javax.servlet.*;
import javax.servlet.http.*;
import org.eclipse.jetty.server.*;
import org.eclipse.jetty.server.handler.*;
public class SampleServer
{
public static void main(String[] args) throws Exception
{
Server server = new Server(80);
HandlerList handlers = new HandlerList();
handlers.setHandlers(new Handler[] { new RequestHandler(), new DefaultHandler() });
server.setHandler(handlers);
server.start();
server.dumpStdErr();
server.join();
}
static class RequestHandler extends AbstractHandler
{
@Override
public void handle(String target, Request baseRequest, HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException
{
response.setContentType("text/html; charset=utf-8");
response.setStatus(HttpServletResponse.SC_OK);
// process request here
baseRequest.setHandled(true);
}
}
}
Свернуть ↑Развернуть ↓