Как уловить не запрашиваемый URL-адрес в сервлете Java?

Мои объекты хранятся в Интернете в двух разных местах:

< 1 > На моем сайте nmjava.com, где я могу поместить их в каталог под названием "Dir_My_App/Dir_ABC/"

< 2 > В хранилище данных Google App Engine

Когда мое приложение Java работает, он проверяет оба места для объектов, я разработал приложение, чтобы он пытался получить объект из Url, ему все равно, является ли он объектом в каталоге или объектом, возвращаемым сервлета.

My_Object Get_Object(String Site_Url,String Object_Path)
{
    ... get object by the name of Object_Path from the Site_Url ...
}

Теперь запрос Url для моего веб-сайта nmjava.com может выглядеть так:

http://nmjava.com/Dir_My_App/Dir_ABC/My_Obj_123 [В каталоге]

Или в случае с сервлетами Google App Engine:

http://nm-java.appspot.com/Check_License/Dir_My_App/Dir_ABC/My_Obj_123 [Не существует]

"Object_Path" автоматически создается моим приложением. Теперь он может получить объект с моего сайта описанным выше способом:

My_Object Get_Object ( " http://nmjava.com", "/Dir_My_App/Dir_ABC/My_Obj_123" );

В Google App Engine мой сервлет работает и готов обслуживать объект, если запрос приходит правильно, но поскольку я не хочу разрабатывать свое приложение, чтобы узнать, находится ли объект в одном каталоге сайта или в другой сайт datastore, мне нужно спроектировать сервлет, чтобы поймать не существующий Url, такой как выше, и иметь возможность сделать вызов:

My_Object Get_Object ( " http://nm-java.appspot.com/Check_License", "/Dir_My_App/Dir_ABC/My_Obj_123" );

Итак, мой вопрос: когда запрос поступает в сервлет с не существующим Url, как он должен его поймать и проанализировать URL-адрес, чтобы правильно реагировать, в моем случае он должен знать, что:

http://nm-java.appspot.com/Check_License/Dir_My_App/Dir_ABC/My_Obj_123

запрашивает объект "My_Obj_123" [игнорировать dirs] и возвращает объект из хранилища данных.

Теперь я получаю следующее:

Ошибка: не найден

Запрошенный URL/Check_License/Dir_My_App/Dir_ABC/My_Obj_123 не найден на этом сервере.

Где в моем сервлете и как я могу обнаружить запрос для этого не существующего Url?

Ответ 1

Первоначально возникает вопрос: создать ServletFilter (настроенный в вашем web.xml), чтобы посмотреть на каждый запрос и перенаправить запрос, если он соответствует вашим конкретным критериям. См. tutorial здесь.