JSP: сеанс не может быть преобразован в тип - PullRequest
0 голосов
/ 19 июля 2011

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

Session cannot be resolved to a type

An error occurred at line: 39 in the jsp file: /xxxxx/test.jsp
Message cannot be resolved to a type
MimeMessage cannot be resolved to a type

и т. Д.

код, образец снятый где-то (не очень ...):

<%@ page import="java.util.*" %>
<%@ page import="javax.mail.*" %>
<%@ page import="javax.mail.internet.*" %>
<%@ page import="javax.activation.*" %>

<%@ page session="true"%>
<html>
<head>
<title>JSP JavaMail Example </title>
</head>
<body>
<%
String to = "sssssss@gmail.com";
String from = "admin@yyyyyy.com";
String subject = "subject";
String messageText = "body";

Properties props = System.getProperties();
//props.put("mail.host", host);
//props.put("mail.transport.protocol", "smtp");
Session mailSession = Session.getDefaultInstance(props, null);

Message msg = new MimeMessage(mailSession);
msg.setFrom(new InternetAddress(from));
InternetAddress[] address = {new InternetAddress(to)};
msg.setRecipients(Message.RecipientType.TO, address);
msg.setSubject(subject);
msg.setSentDate(new Date());
msg.setText(messageText);

Transport.send(msg);
%>
</body>
</html>

Поиск в Google показал, что настоящие почтовые банки могут отсутствовать, поэтому я загружаю javamail, извлекаю банки и помещаю их в каталог WEB-INF tomcat.Без изменений.

Это установка rackhostcloud с CentOs (5.5?) На нем.Это было настроено старой командой (давно прошло).Можно с уверенностью сказать, что я не буду известен как лучший админ Linux, но основные вещи из командной строки не проблема.Я могу просто запустить yum, но я думаю, что здесь есть кое-что еще, кроме этого.Возможно, какой-нибудь Java-конфиг?

Я просто хочу отправить простое письмо ...

Любые предложения, очень ценятся.

Ответы [ 3 ]

5 голосов
/ 19 июля 2011

Почтовые банки должны идти в WEB-INF / lib, а не в WEB-INF. Вам нужно будет перезапустить приложение или весь сервер Tomcat, чтобы оно вступило в силу.

Из вашего описания я предполагаю, что вы работаете с разобранным каталогом веб-приложений, который находится в $ TOMCAT_HOME / webapps /. Первое, что нужно знать: если рядом с каталогом есть .war, то война - это «источник правды». Война - это веб-архив. В основном это zip-файл, содержащий весь каталог веб-приложения, и Tomcat извлекает этот каталог для повышения производительности. Для вас это означает, что независимо от того, что вы делаете с каталогом, если временная метка файла войны каким-либо образом обновляется, она сдувает все внесенные вами изменения в каталог и заменяет ее содержимым войны снова.

Теперь после этого все, что вам нужно для того, чтобы использовать почтовые классы, - это файловая структура:

$TOMCAT_HOME
    bin
    conf
    lib
    ...
    webapps
        <your app>
            test.jsp (Can be in any directory under <your app> except WEB-INF)
            WEB-INF
                lib
                    mail.jar
                    activation.jar
2 голосов
/ 09 декабря 2011

У меня была такая же проблема. Это не твоя вина, а Tomcat. На Tomcat6 mail.jar не будет работать правильно, если вы поместите его в папку WEB-INF / lib, как вы это сделали бы с любым другим jar. Вы должны поместить mail.jar в общую папку lib (/ usr / share / tomcat6 / lib), избавиться от mail.jar в папке WEB-INF / lib, перезапустить Tomcat6, и он начнет работать. Вам также не понадобится баночка активации с tomcat6.

Другие серверы приложений, вероятно, будут работать нормально, если mail.jar находится в WEB-INF / lib, или, скорее всего, уже встроены свои собственные почтовые библиотеки. С Tomcat6 вам придется выполнить вышеописанное.

1 голос
/ 19 июля 2011

Переместите этот код в сервлет, и пусть ваше руководство по IDE организует импорт и предложит способы решения проблем компиляции.Этот код не помещается в .jsp

. Затем, конечно, проверьте еще раз, если WEB-INF/lib содержит все необходимые банки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...