Ada_Ru форум

Обсуждение языка Ада

Вопрос по запуску AWS приложения.

Оставить новое сообщение

Сообщения

Ivan Kohan
Вопрос по запуску AWS приложения.
2009-11-15 12:54:50

Добрый день!

 

Пожалуйста, помогите разобраться с возникшей проблемой.

В данный момент я написал приложение, которое использует библиотеку AWS.

При тестировании на моем локальном компьютере (WindowsXP), это приложение вполне нормально откликается на URL: http://localhost:8080/main

 

Вчера я разместил мое приложение, без изменений, на сервере моего товарища. У него установлен WindowsXP со стандартным Windows брандмауэром.

Я расчитывал, что приложение будет откликаться на URL:

http://screamer.kiev.ua:8080/main

 

Однако, никакого отклика на URL: http://screamer.kiev.ua:8080/main нет. В тоже время, когда мой товарищ запрашивает на своем сервере

http://localhost:8080/main у него также все работает.

 

Я проверил его порт 8080 TelNet'ом - вижу, что порт открыт.

 

Возможно я что-то неправильно указал в коде своего приложения?

 

Помогите пожалуйста разобраться, нет ли в моем коде ошибки и как заставить мое приложение откликаться на URL http://screamer.kiev.ua:8080/main

Буду очень благодарен за помощь.

С уважением, Иван Кохан

 

Вот код главного модуля:

----------------------------------------------------------------------------------------------------------------------------

with Ada.Text_IO; use Ada.Text_IO;

 

with AWS.Response;

with AWS.Server;

with AWS.Status;

with AWS.Utils;

with AWS.MIME;

with AWS.Parameters;

 

with Dates; use Dates;

with Xiumen; use Xiumen;

with Globalvar; use Globalvar;

 

procedure Main is

WS : AWS.Server.HTTP;

package IO_Integer is new Integer_IO(Integer); use IO_Integer;

InYear : TypeOfYear := 1910;

InMonth : TypeOfMonth := 1;

InDay : TypeOfDay := 1;

InHour : TypeOfHour := 0;

InMinutes : TypeOfMinutes := 0;

 

function HW_CB (Request : in AWS.Status.Data) return AWS.Response.Data is URI : constant String := AWS.Status.URI (Request);

Filename : constant String := "./img" & URI;

begin

if URI = "/main" then

InYear := 2010;

InMonth := 03;

InDay := 24;

InHour := 14;

InMinutes := 30;

 

XiumenStart(InYear, InMonth, InDay, InHour, InMinutes);

return AWS.Response.Build ("text/html", XiumenInput);

elsif AWS.Utils.Is_Regular_File (Filename) then

return AWS.Response.File

(Content_Type => AWS.MIME.Content_Type (Filename),

Filename => Filename);

else

return AWS.Response.Build ("text/html", XiumenAttention); end if;

end HW_CB;

 

begin

AWS.Server.Start (WS, "Main", CallBack => HW_CB'Unrestricted_Access); AWS.Server.Wait;

end Main;

----------------------------------------------------------------------------------------------------------------------------

Ivan Kohan wrote:

 

 

Добрый день!

 

Пожалуйста, помогите разобраться с возникшей проблемой.

В данный момент я написал приложение, которое использует библиотеку AWS.

localhost:8080 и screamer.kiev.ua:8080 есть совершенно разные вещи. Первое, что имеет смысл проверить, так это на какой адрес/порт садится AWS. У меня такое подозрение, что он использует именно localhost:8080.

Вадим, добрый день.

 

Подскажите пожалуйста, как правильно посадить его на screamer.kiev.ua:8080 ?

Вот те части кода, где создается сервер. Возможно мне необходимо изменить параметры при создании AWS?

--------------------------------------------------------------------------------------

...

WS : AWS.Server.HTTP;

...

function HW_CB (Request : in AWS.Status.Data) return AWS.Response.Data is URI : constant String := AWS.Status.URI (Request);

Filename : constant String := "./img" & URI;

begin

if URI = "/main" then

...

return AWS.Response.Build ("text/html", XiumenInput);

elsif AWS.Utils.Is_Regular_File (Filename) then

return AWS.Response.File

(Content_Type => AWS.MIME.Content_Type (Filename),

Filename => Filename);

else

return AWS.Response.Build ("text/html", XiumenAttention); end if;

end HW_CB;

...

begin

AWS.Server.Start (WS, "Main", CallBack => HW_CB'Unrestricted_Access); AWS.Server.Wait;

end Main;

-------------------------------------------------------------------------------------------------------------------------------

 

С уважением,

Иван

 

15 октября 2009 г. 16:34 пользователь Vadim Godunko <vgodunko@rostel.ru>написал:

Ivan Kohan wrote:

 

 

Вадим, добрый день.

 

Подскажите пожалуйста, как правильно посадить его на

screamer.kiev.ua:8080 <http://screamer.kiev.ua:8080/> ?

 

Я не сильный специалист по AWS, но есть такой пакет AWS.Config, в нём будет описание объекта-конфигурации. Нужно задать host и port. Потом этот обхект скормить AWS.Server.Start.

У него установлен WindowsXP со стандартным Windows брандмауэром.

 

Возможно всетаки этот брандмауэр и не пускает?

 

Я расчитывал, что приложение будет откликаться на URL:

http://screamer.kiev.ua:8080/main

 

Однако, никакого отклика на URL: http://screamer.kiev.ua:8080/main нет. В тоже время, когда мой товарищ запрашивает на своем сервере

http://localhost:8080/main у него также все работает.

 

Я проверил его порт 8080 TelNet'ом - вижу, что порт открыт.

 

 

Тут важно понять, как screamer.kiev.ua:8080 мапируется на порт 8080 вашего компьютера. Если у компьютера установлен внешний IP адрес

на интерфейсе, это одно. Если на модеме, то другое. Посмотрите что даст команда ipconfig

 

А как проверяли telnet-ом? Как telnet screamer.kiev.ua 8080 или как telenet localhost 8080 ?

 

Можно телнетом послать запрос странички вида

GET /main HTTP/1.0

(два раза ENTER)

 

И посмотреть отклик сервера.

 

Еще можно включить логирование запросов, добавив перед

AWS.Server.Start строку

 

AWS.Server.Log.Start (WS);

 

И в файл настройки имя/каталог для лог файлов. Тогда видно будет

все запросы от клиентов.

 

--

Maxim Reznik

Уважаемые коллеги.

Большое спасибо за оказанную помощь!

 

Я переслал сообщения эхи моему товарищу и вот в чем оказалась проблема: ------------------------------------------------------------------------------------------------------------------------

Тут важно понять, как screamer.kiev.ua:8080 мапируется на порт 8080 вашего компьютера.

 

Вот где была проблема. У меня ж роутер стоит, который форвардит входящие

запросы на сервер, и там этот порт закрыт, >> поэтому на сервере локально файрвол пропускал, а извне фильтровал роутер.

 

Я уже открыл, работает,

------------------------------------------------------------------------------------------------------------------------

 

Теперь приложение успешно работает и я могу продолжать отладку расчетных модулей.

Еще раз огромное спасибо!

 

С уважением,

Иван Кохан

 

 

15 октября 2009 г. 17:59 пользователь Maxim Reznik <yeo@mail.zp.ua> написал:

Новое сообщение:
Страницы: 1

Чтобы оставить новое сообщение необходимо Зарегистрироваться и Войти