Как правильно настроить веб-апплет Java с использованием SMTP на сервере - PullRequest
0 голосов
/ 24 февраля 2012

Мне нужно, чтобы веб-апплет Java отправлял автоматические электронные письма через SMTP. Я относительно свежий для серверов и общения с точки зрения программирования. Поэтому я не использую сервлеты, а просто запускаю java mail api в своем веб-апплете. Он работает нормально, когда я запускаю его через Netbeans и использую Glassfish. Я хочу поставить его на сервер компании, чтобы его можно было запустить с их сайта.

Я знаю, как встроить апплет и тому подобное, но я не уверен, как именно будет работать почтовый сервис. Из того, что я понимаю, мне нужны соответствующие файлы jar (почта, активация, pop3 и т. Д.), Установленные на пути к классам сервера или в соседнем каталоге, когда апплет работает. Я предполагаю, что этот сервер будет делать что-то похожее на Glassfish, так как я могу скомпилировать и запустить все в апплете за пределами netbeans, но получаю ошибки classnotfound / classnotdef, когда апплет пытается отправить электронное письмо. Это может показаться из-за отсутствия серверной среды, подобной Glassfish.

Опять же, я довольно новичок в этой области взаимодействия с сервером и его структуры, поэтому любые руководства, которые помогут с введением, будут полезны. В дополнение к этому, любые советы по началу работы также были бы полезны для того, чтобы что-то двигаться в данный момент.

Наконец, что именно Glassfish и другие сервисы, такие как Apache и Tomcat, предоставляют для Netbeans? Похоже, они нужны для разработки чего-либо связанного с Интернетом в Netbeans, хотя я могу запускать апплеты вне Netbeans (исключая почтовые службы), что он на самом деле делает? Это искусственный сервер, имитирующий процессы полного? Я потратил несколько часов, пытаясь узнать больше об этих вещах, но я не нашел ничего общего с тем, как и почему все это нашел.

Спасибо за любое направление.

1 Ответ

1 голос
/ 24 февраля 2012

Где бы я разместил это на сервере, ..

В месте, доступном для JRE.Некоторые каталоги серверов запрещены для апплетов (и общего просмотра), но единственное место, из которого JRE должна иметь возможность загружать Jars, это тот же каталог, что и HTML.Это не самое оптимальное решение, но оно будет работать.

Если вы хотите использовать «оптимальный», я бы поместил все файлы Jar для всех апплетов в один каталог, /lib (a *Каталог 1008 * в корне общедоступного сайта - mydomain.com -> mydomain.com/lib).

.. и нужно ли на него направлять апплет?

Да.Это делается с помощью атрибута archive элемента applet.См. Тег APPLET для получения дополнительной информации.


Как только он работает с использованием простого элемента апплета, было бы лучше всего затем преобразовать его в запуск с использованием deployJava.js..Скрипт выполняет минимальную проверку версии для JRE.Но сначала запустите его, используя элемент applet на одном компьютере, на котором уже есть минимально необходимый JRE для запуска апплета - это проще.


Кстати: этот апплет должен иметь цифровую подпись идоверять конечному пользователю, прежде чем он сможет отправлять электронные письма на адреса в других доменах.Одним из преимуществ отправки почты с сервера является то, что апплет может быть помещен в «песочницу», поскольку для отправки информации ему достаточно «позвонить домой» - сервер сделает все остальное.


Что касается цифровой подписи, я не слышал о том, что это требование для отправки почты.

У вас впереди крутая кривая обучения.;)

Не могли бы вы объяснить, почему он должен быть подписан?

См. Что могут и не могут делать апплеты .

Апплеты без знака

Апплеты без знака могут выполнять следующие операции:

  • Они могут устанавливать сетевые соединения с хостом, с которого они пришли .
  • ...

Цитата из Oracle, акцент & смелость мной.Одна из причин, по которой было принято это решение, заключалась в том, что (тогда владельцы) Sun не хотели, чтобы апплеты получали дурную славу из-за межсайтовых запросов ресурсов (я вытащил изображение прямо с вашего сайта, чтобы показать его в апплете на моем сайте).).Он известен как «горячие ссылки» и очень недоволен, так как мой сайт получает выгоду (и посетителей), но ваш сайт платит за размещение ресурса и загрузку.

Другая причина в том, что апплетможет запустить, а затем атаковать сайт, запрашивая один ресурс тысячи раз.Получите игру-апплет 'kewl' с этим случаем (скрытым в фоновом режиме) в тысячах браузеров, и вы сможете вызвать сбой сайта.Это называется атакой типа «отказ в обслуживании».

Поэтому Sun решила, что апплет может охватывать только домены, если он пользуется доверием пользователя, и единственный способ получить это доверие - разработчикподписать код, JRE, чтобы спросить пользователя, разрешат ли он его запустить, и пользователь должен подтвердить это приглашение.

В последнее время Sun начала распознавать ..cross-domains.xml (или вызыватьчто-то вроде того).Если вы поместите один из этих файлов в правильное имя / местоположение на своем сайте, вы можете сообщить JRE, что все в порядке, чтобы разрешил доступ к ресурсам апплетам с других сайтов (без явного разрешения пользователя).

Я сомневаюсь, что это сработает для электронной почты, даже если домен, на который отправляется почта, имеет соответствующий файл, разрешающий это.Но я не проверял это.

...