URL-адрес загруженного веб-сервиса - PullRequest
0 голосов
/ 04 января 2012

Я использую веб-сервис Java (на tomcat). У меня есть следующий код, который обрабатывает загрузку изображения:

    public String uploadPicture(    long    xId,
                                int     pictureIndex,
                                String  imageData )
{
    File imageFile  = new File( new String( "D:\\" + xId + "_" + pictureIndex ) );

    try 
    {
        FileOutputStream    fos             = new FileOutputStream( imageFile );
        byte[]              encodedImage    = Base64.decode( imageData );

        fos.write( encodedImage );
        fos.close();
        return imageFile.getPath();
    } 
    catch( FileNotFoundException e ) 
    {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    catch( Base64DecodingException e ) 
    {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } 
    catch( IOException e ) 
    {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    return null;
}
  1. Я указываю путь как D: \, поскольку он находится на локальном ПК. Но мне нужно обновить путь к серверу, на котором он будет развернут, а затем изменить его на ~ \ picDir? что-то подобное?

  2. URL веб-сервиса: http://192.168.0.11:8080/XWebService/services/XWebService будет обновлен до домена вместо 192.168.0.11 Какой должен быть URL, чтобы получить изображение? (Например, если папка с изображениями: ~ \ picDir)

1 Ответ

2 голосов
/ 04 января 2012
  1. Если на целевом сервере будет работать Linux / Unix, правильный путь должен быть примерно таким: / usr / share / myapp.'~ \' совершенно неправильно, я думаю, вы имели в виду '~ /', который будет указывать на домашнюю папку текущего пользователя.Этого следует избегать, поскольку вы можете запускать веб-сервер как разные пользователи с разными домашними каталогами.Обычно в каждой среде (машине разработчика, демоверсии, живом сервере) у вас должно быть такое место для хранения конфигурации и данных, которые необходимы приложению.
  2. Расположение файлов в вашей файловой системе не имеет ничего общего с URL-адресом, по которомуфотографии будут расположены.Это зависит от веб-сервера (Tomcat, Jetty, JBoss и т. Д.), Который будет запускать ваше приложение и само ваше приложение.Например, вы можете настроить свой сервер Tomcat для сопоставления домена www.myapp.com с каталогом / var / lib / tomcat6 / webapps / myapp /.Сервлет, который будет публиковать изображения, может взять их из директории конфигурации, указанной в 1. = / usr / share / myapp / picDir.Если к сервлету можно получить доступ через / pictures? PicId = 1, вы найдете их по адресу www.myapp.com/pictures?picId=1.Однако, если вы просто хотите поместить статические изображения в ваш * .war-файл, к которому должен обращаться браузер, поместите их в корневой каталог вашего * .war-файла.

Подводя итог:

  1. Выберите (и сообщите нам) свой сервер приложений
  2. Используйте некоторый каталог конфигурации для всех сред и настройте сервер так, чтобы он мог его видеть
  3. Настройте сервер для нужного домена

Вы должны прочитать больше о контексте файлов * .war и о том, как организован сам файл.

Понимание URL-адресов и контекста на примере Tomcat

Предполагая, что:

  1. На вашем локальном компьютере нужный сервлет находится по адресу: http://localhost:8080/myapp/utils/myservlet.html
  2. Ваше приложение упаковано в myapp.war
  3. Удаленный Tomcat имеет IP 2.2.2.2 и работает через порт 8080

Когда вы развертываете myapp.war на удаленном Tomcat в каталог webapps (/ var / lib / tomcat6 / webapps), он распаковывается ивы сможете увидеть свой сервлетв http://2.2.2.2:8080/myapp/utils/myservlet.html. Конфигурируя ваше приложение в Tomcat в server.xml, вы можете добавить доменное имя и уменьшить ненужную часть «myapp», называемую контекстом, фактически оставляя URL в форме http://www.myapp.com/utils/myservlet.html. Это то, что вы хотите в производствесреда.Этот раздел объясняется в документации Tomcat, см. Его.

Доступ к ресурсам файловой системы из веб-приложения Если вы хотите сохранить или получить какой-либо файл с вашего сервера, имейте в виду,этот клиент (веб-браузер) не имеет представления о структуре диска.Браузер использует шаблон связи запрос-ответ, который (с точки зрения загрузки / выгрузки) может обрабатываться сервером следующим образом:

  • upload - получить некоторый байтовый контент из запроса и сохранить его в виде файла на серверная файловая система
  • загрузка - чтение некоторого байтового содержимого из серверной файловой системы и потоковая передача его в виде ответа

Как вы можете видеть вв обоих случаях файловая система сервера является внутренним делом самого сервера.Вы можете сохранить его где угодно.Вы можете читать байты из любого места.Вот почему хорошо иметь MYAPP_CONF (упомянутый в комментариях) для хранения и чтения этих файлов всегда из некоторого предопределенного каталога.

...