Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> j2ee и сервлеты, как скомпилировать 
:(
    Опции темы
Sherst
Дата 22.5.2006, 21:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 131
Регистрация: 26.10.2005

Репутация: 2
Всего: 2



Привет всем!
В общем вопрос простой:
на днях поставил j2ee1.4 Application Server. Не могу понять как там можно скомпилировать 
сервлет. Укажите, если не тяжело последовательность действий, или какую-нить ссылку.
За ранее спасибо. 
PM MAIL   Вверх
Sherst
Дата 22.5.2006, 23:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 131
Регистрация: 26.10.2005

Репутация: 2
Всего: 2



Приведу код сервлета:

Код

import javax.servlet.*;
import java.io.IOException;

public class PrimitiveServlet implements Servlet {

  public void init(ServletConfig config) throws ServletException {
    System.out.println("Init");
  }
  
  public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException{  
  }

  public void destroy() {
    System.out.println("destroy");
  }

  public String getString() {
    return null;
  }

  public ServletConfig getServletConfig() {
    return null;
  }
}


Файл Build.xml скопировал из папки Sun\AppServer\samples\quickstart\src  и немного изменил
Код

<!DOCTYPE project [
  <!ENTITY sampleCommonCommands SYSTEM "../../common.xml">
]>

<project name="hello-example" default="core" basedir=".">
  
  <!-- Configure the context path for this application --> 
  <property name="PrimitiveServletwar.home" value=".."/> 
  <property name="PrimitiveServletwar.src" value="${PrimitiveServletwar.home}/src"/>
  <property name="build.dir" value="${PrimitiveServletwar.home}/build"/>
  <property name="PrimitiveServlet.temp.war.build" value="${build.dir}/wartemp"/>
  <property name="PrimitiveServletwar.srcdocroot" value="${PrimitiveServletwar.src}/docroot"/>
  <property name="PrimitiveServletwar.web.name" value="PrimitiveServlet"/>

  <!-- Property names to passed to common targets -->
  <!-- commented by prakash <property name="deploy.file" value="../hello.war"/> -->
  <property name="appname" value="${PrimitiveServletwar.web.name}"/>
  <property name="apptype" value="web"/>

  <property name="sample.home" value="../../" />

  &sampleCommonCommands;

  <target name="init">
      <condition property="deploy.file" value="${build.dir}/PrimitiveServlet.war"> 
    <available file="${build.dir}/PrimitiveServlet.war"/>   
      </condition>
      <property name="deploy.file" value="../PrimitiveServlet.war"/>
                         
      <condition property="verify.file" value="${build.dir}/PrimitiveServlet.war">
    <available file="${build.dir}/PrimitiveServlet.war"/>
      </condition>
      <property name="verify.file" value="../PrimitiveServlet.war"/>
      <tstamp/>
  </target>

  <target name="copy_ear" depends="init">
      <delete file="../PrimitiveServlet.war"/>
      <copy file="${build.dir}/PrimitiveServlet.war" todir=".." />
  </target>
  
  <target name="core" depends="war"
     description="Copy HTML and JSP pages and build hello.war file" >
  </target>

  <target name="war" depends="init">
    <mkdir dir="${build.dir}"/>
    <war destfile="${build.dir}/PrimitiveServlet.war" webxml="web.xml" 
         basedir="${PrimitiveServletwar.srcdocroot}" excludes="**/cvs/**">
      <webinf dir="." includes="sun-web.xml"/>
    </war>
  </target>
  
  <!-- ======================================================= -->
  <!-- Deploy target.                                          -->
  <!-- ======================================================= -->
  <target name="deploy" depends="init, setpassword, deploy_common"/>
  
  <!-- ======================================================= -->
  <!-- Undeploy target.                                        -->
  <!-- ======================================================= -->
  <target name="undeploy" depends="init, setpassword, undeploy_common"/>

  <target name="clean" depends="init">
    <delete dir="${build.dir}"/>    
  </target>

  <!-- ======================================================= -->
  <!-- Verify target.                                          -->
  <!-- ======================================================= -->
  <target name="verify" depends="init,verify_common" />  

  <!-- ======================================================= -->
  <!-- Update target: dynamically updates and reloads app.     -->
  <!-- ======================================================= -->
  <target name="update" depends="init,update_common" />

  <!-- ======================================================= -->
  <!-- Javadocs target.                                        -->
  <!-- ======================================================= -->
  <target name="javadocs">
    <echo message="This sample does not conatin .java files to generate javadocs."/>
  </target>

</project>


Далее собираю файлы с помощью команды ant. Получившийся файл PrimitiveServlet.war копирую в
директорию  I:\Sun\AppServer\domains\domain1\autodeploy, набираю в браузере http://localhost:8080/PrimitiveServlet выдает ошибку    "HTTP Status 404 - /PrimitiveServlet" 
набираю в браузере http://localhost:8080/index.html стартовую страницу отображает нормально.
Наверное что-то с Build.xml.

 
PM MAIL   Вверх
jimur
Дата 23.5.2006, 07:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 21.4.2006

Репутация: 1
Всего: 3



Цитата(Sherst @  22.5.2006,  23:21 Найти цитируемый пост)
набираю в браузере http://localhost:8080/PrimitiveServlet выдает ошибку    "HTTP Status 404 - /PrimitiveServlet" 

Покажи что у тебя в web.xml?
Наверно ты там просто сервлет не прописал. 
PM MAIL   Вверх
MisterCleric
Дата 23.5.2006, 07:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1043
Регистрация: 16.2.2006
Где: Харьков, Украина

Репутация: 33
Всего: 38



Конечно! В дескрипторе размещения (файле web.xml) нужно указать контейнеру, какой сервлет использует web-приложение. Например так:
Код

 <servlet>
        <servlet-name>Servlet2</servlet-name>
        <servlet-class>mypack.EchoForm</servlet-class>
   </servlet>

    <servlet-mapping>
        <servlet-name>Servlet2</servlet-name>
        <url-pattern>/EchoForm</url-pattern>
    </servlet-mapping>
 


--------------------
ПРИШЕЛ, УВИДЕЛ - ПЕРЕПИСАЛ...
PM MAIL ICQ   Вверх
Sherst
Дата 23.5.2006, 08:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 131
Регистрация: 26.10.2005

Репутация: 2
Всего: 2



файл web.xml

Код

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
  <servlet>
    <servlet-name>PrimitiveServlet</servlet-name>
    <servlet-class>/PrimitiveServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>PrimitiveServlet</servlet-name>
    <url-pattern>/PrimitiveServlet</url-pattern>
  </servlet-mapping>
</web-app>



В тегах <servlet-class> </servlet-class>  надо указать класс сервлета, как мне его  получить? 
PM MAIL   Вверх
tux
Дата 23.5.2006, 08:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Летатель
***


Профиль
Группа: Участник Клуба
Сообщений: 1853
Регистрация: 10.2.2005
Где: msk.ru

Репутация: 74
Всего: 132



А такая ссылка тоже не будет работать?
http://localhost:8080/PrimitiveServlet/PrimitiveServlet 
PM MAIL Skype GTalk Jabber YIM   Вверх
Sherst
Дата 23.5.2006, 08:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 131
Регистрация: 26.10.2005

Репутация: 2
Всего: 2



В Tomcat я мог бы использовать библиотеку servlet.jar для компиляции сервлета, а тут что использовать не знаю.

Добавлено @ 08:46 
Цитата

А такая ссылка тоже не будет работать?
http://localhost:8080/PrimitiveServlet/PrimitiveServlet  

Да тоже не работает.

Ссылка http://localhost:8080/PrimitiveServlet 
Выдает мне 

Directory Listing For /

--------------------------------------------------------------------------------
Filename                            Size                      Last Modified 
PrimitiveServlet.java          0.5 kb            Wed, 24 May 2006 04:25:24 GMT 
images/                                                    Wed, 24 May 2006 04:25:24 GMT 

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

J2EETM 1.4 Application Server

 
PM MAIL   Вверх
jimur
Дата 23.5.2006, 10:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 73
Регистрация: 21.4.2006

Репутация: 1
Всего: 3



Цитата(Sherst @  23.5.2006,  08:36 Найти цитируемый пост)
<servlet-class>/PrimitiveServlet</servlet-class>

а зачем "/" в начале? 
PM MAIL   Вверх
MisterCleric
Дата 23.5.2006, 12:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1043
Регистрация: 16.2.2006
Где: Харьков, Украина

Репутация: 33
Всего: 38



У тебя сервлет в пакете или просто класс?
Если в пакете, то пиши 
Код

[packagename].[classname]

если нет, то просто [classname].
Без усяких слешей.
Да, и сервлет должен лежать в папке WEB-INF/classes 


--------------------
ПРИШЕЛ, УВИДЕЛ - ПЕРЕПИСАЛ...
PM MAIL ICQ   Вверх
Sherst
Дата 25.5.2006, 00:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 131
Регистрация: 26.10.2005

Репутация: 2
Всего: 2



Попробую написать о том как запускать сервлеты в J2EE, может кому понадобится smile

Итак после того как вы установили J2EEsdk1.4, отредактируйте переменные окружения JAVA_HOME, J2EE_HOME , ANT_HOME
У меня это выглядит так: 
J2EE_HOME - I:\Sun\AppServer
JAVA_HOME - I:\Sun\AppServer\jdk
ANT_HOME - I:\Sun\AppServer\lib\ant

Затем в новой переменной PATH укажите путь к bin по каждой из переменных, например так
PATH - I:\Sun\AppServer\bin;I:\Sun\AppServer\jdk\bin;I:\Sun\AppServer\lib\ant\bin

Далее создадим удобную для нас структуру каталогов по такому пути:
i:\Sun\AppServer\domains\domain1\application\j2ee-modules

Я создал папку PrimitiveServlet:
i:\Sun\ApPServer\domains\domain1\application\j2ee-modules\PrimitiveServlet
Внутри нее WEB-INF, внутри WEB-INF каталог classes

Вот что получилось: 
i:\Sun\ApPServer\domains\domain1\application\j2ee-modules\PrimitiveServlet\WEB-INF\classes


Затем пишем сам сервлет:

Код

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;

public class PrimitiveServlet extends HttpServlet {

  public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 

    PrintWriter out = response.getWriter();
    out.println("<HTML>");
    out.println("<HEAD>");
    out.println("<TITLE> Servlet Testing </TITLE>");
    out.println("</HEAD>");
    out.println("<BODY>");
    out.println("Welocome to the Servlet!");
    out.println("</BODY>");
    out.println("</HTML>");

  }

}


Для компиляции сервлета Установим переменную окружения CLASSPATH таким образом:
SET CLASSPATH=i:\Sun\AppServer\lib\j2ee.jar;
Скомпилируем данный сервлет.
Файл PrimitiveServlet.class поместим в созданный ранее каталог classes.
Напишем дескриптор развертывания (файл web.xml) и поместим его в каталог WEB-INF.

Вот как web.xml выглядит у меня:

Код

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
  <servlet>
    <servlet-name>Primitive</servlet-name>
    <servlet-class>PrimitiveServlet</servlet-class>
  </servlet>

    <servlet-mapping>
        <servlet-name>Primitive</servlet-name>
        <url-pattern>/Primitive</url-pattern>
    </servlet-mapping>
</web-app>



Запускаем сервер приложений с помощью файла startserv.bat он находится у меня в 
I:\Sun\AppServer\domains\domain1\bin 

И наконец в браузере набираем такую строку
http://localhost:8080/PrimitiveServlet/Primitive

Вроде бы все smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.0535 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.