Pull to refresh

Настраиваем Tomcat для работы с JSF2 и другими компонентами Java EE 6

Reading time7 min
Views20K
Данная статья описывает по шагам как настроить Tomcat (на текущий момент версия 6.0.26) на работу с разными компонентами Java EE 6.Вы можете пропустить чтение этой статьи и сразу получить настроенный Tomcat и пример приложения.

Tomcat

Почему именно Tomcat а не Glassfish V3? Для меня важно использование именно Tomcat т.к. он компактен, быстро работает и легко объединяется в кластер под управлением Apache Httpd. V3 пока не умеет работать в кластере.

Установка

  1. Установите JDK 6.
  2. Настройте переменную окружения JAVA_HOME
  3. Скачайте архив apache-tomcat-6.0.26.zip и распакуйте в текущую папку. Будет создана папка apache-tomcat-6.0.26.
Для запуска:
> bin/startup.(bat|sh) - откроет новое окно или<br/>> bin/catalina.(bat|sh) run - запустит в новом окне.
Для увеличения памяти и возможности отладки перед запуском catalina.bat можно указать переменную окружения JAVA_OPTS:
set JAVA_OPTS=-Xmx512m -XX:MaxPermSize=256m -Xdebug -Xrunjdwp:transport=dt_socket,address=1025,server=y,suspend=n<br/>export JAVA_OPTS=-Xmx512m -XX:MaxPermSize=256m -Xdebug -Xrunjdwp:transport=dt_socket,address=1025,server=y,suspend=n

Unified EL 2.2

Язык выражений нужен как в JSP при использовании библиотек тэгов, так и в facelets. Основные улучшения в новой версии (см. список нововведений) — возможность вызывать методы, в т.ч. с параметрами.
${application.getRealPath('/data')}

Установка

  1. Удалите lib/el-api.jar из Tomcat.
  2. Скопируйте реализацию el-api-2.2.jar и el-impl-2.2.jar в папку lib в Tomcat. Это jar-ы из Glassfish V3.
  3. Добавьте в WEB-INF/web.xml в вашем приложении следующие строки:
    <context-param><br/><param-name>com.sun.faces.expressionFactory</param-name><br/><param-value>com.sun.el.ExpressionFactoryImpl</param-value><br/></context-param>
К сожалению после обновления языка выражений Jasper (реализация компилятора JSP в Tomcat) не понимает новые выражения и они не могут быть использованы в JSP. Если вы хотите, чтобы Tomcat везде использовал новый язык выражений (а не свою реализацию org.apache.el) нужно перекомпилировать Tomcat. Подробности здесь (на англ. языке). Также пункт 3 будет не нужен.

Mojarra

Первая реализация JSF 2. Стабильно и быстро работает. Помимо реализации JSF нам также понадобится установить JSTL 1.2.

Установка

  1. Скачайте mojarra-2.0.2-FCS-binary.zip
  2. Скопируйте из архива из папки mojarra-2.0.2-FCS/lib jsf-api.jar и jsf-impl.jar в папку WEB-INF/lib вашего приложения.
  3. Скопируйте jstl 1.2 в папку WEB-INF/lib вашего приложения.
  4. Добавьте в WEB-INF/web.xml в вашем приложении следующие строки:
    <servlet><br/>    <servlet-name>FacesServlet</servlet-name><br/>    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class><br/>    <load-on-startup>1</load-on-startup><br/></servlet><br/><servlet-mapping><br/>    <servlet-name>FacesServlet</servlet-name><br/>    <url-pattern>*.xhtml</url-pattern><br/></servlet-mapping>
  5. Создайте файл WEB-INF/faces-config.xml в вашем приложении:
    <faces-config xmlns="http://java.sun.com/xml/ns/javaee"<br/>  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"<br/>  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"<br/>  version="2.0"><br/></faces-config>

Weld

Weld реализует спецификацию JSR 299 Contexts and Dependency Injection.Вкратце Weld позволяет устанавливать значения полей автоматически с помощью аннотаций.

Установка

  1. Скачайте weld-1.0.1-Final.zip
  2. Создайте файл WEB-INF/beans.xml со следующим содержимым:
    <?xml version="1.0" encoding="UTF-8"?><br/><beans/>
    Это нужно чтобы Weld сканировал веб-приложение на предмет Java-Beans которые будут участвовать в CDI.
  3. Скопируйте weld-1.0.1-Final/artifacts/weld/weld-tomcat-support.jar из архива в lib папку в Tomcat.
  4. Cоздайте в вашем приложении файл META-INF/context.xml со следующим содержимым:
    <?xml version="1.0" encoding="UTF-8"?><br/><Context><br/><!-- Declare Weld Bean Manager --><br/><Resource name="BeanManager"<br/>    auth="Container"<br/>    type="javax.enterprise.inject.spi.BeanManager"<br/>    factory="org.jboss.weld.resources.ManagerObjectFactory"/><br/><!-- For Weld to support Servlet Injection --><br/><Listener className="org.jboss.weld.environment.tomcat.WeldLifecycleListener"/><br/></Context>
  5. Скопируйте weld-1.0.1-Final/artifacts/weld/weld-servlet.jar из архива в папку WEB-INF/lib вашего приложения.
  6. Добавьте в WEB-INF/web.xml следующие строки:
    <!-- Weld listener --><br/><listener><br/>    <listener-class>org.jboss.weld.environment.servlet.Listener</listener-class><br/></listener><br/><!-- Reference to Weld Bean Manager --><br/><resource-env-ref><br/>    <description>Object factory for the CDI Bean Manager</description><br/>    <resource-env-ref-name>BeanManager</resource-env-ref-name><br/>    <resource-env-ref-type>javax.enterprise.inject.spi.BeanManager</resource-env-ref-type><br/></resource-env-ref>

Hibernate Validator

JSR 303 Bean Validation дает простой способ применения правил валидации как для JSF так и для JPA. Данные правила определяются через аннотации к полям в Java Beans:
@NotNull@Size(min = 1)<br/>private String username;

Установка

  1. Скачайте hibernate-validator-4.0.2.GA-dist.zip
  2. Скопируйте hibernate-validator-4.0.2.GA/hibernate-validator-4.0.2.GA.jar из архива в папку WEB-INF/lib вашего приложения.
  3. Скопируйте из папки в архиве hibernate-validator-4.0.2.GA/lib дополнительные библиотеки slf4j-api-1.5.6.jar, validation-api-1.0.0.GA.jar в папку WEB-INF/lib вашего приложения.

EclipseLink

JPA позволяет сохранять в БД Java Beans без использования SQL. Нужные вызовы и если нужно схема БД создается автоматически. При этом используется простой интерфейс EntityManager. К сожалению т.к. Tomcat не является полноценным Java EE сервером то некоторые возможности JPA (управление транзакциями, автоматическое получение EntityManager) не доступны. Также все объекты которые будут сохранятся в БД должны быть описаны в файле конфигурации.

Установка

  1. Данная установка предполагает что у вас настоена MySQL БД на локальном компьютере. Пароль у root пользователя БД — "" (пустой пароль).
  2. Cкачайте драйвер для БД и положите JAR в папку lib в Tomcat.
  3. Скачайте eclipselink-2.0.1.v20100213-r6600.zip
  4. Скопируйте eclipselink/jlib/jpa/javax.persistence_2.0.0.v201002051058.jar из архива в папку WEB-INF/lib вашего приложения.
  5. Скопируйте eclipselink/jlib/eclipselink.jar из архива в папку WEB-INF/lib вашего приложения.
  6. Создайте в вашем приложении файл WEB-INF/classes/META-INF/persistence.xml со следующим содержимым:
    <?xml version="1.0" encoding="UTF-8"?><br><persistence version="1.0"<br>xmlns="http://java.sun.com/xml/ns/persistence"<br>xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"<br>xsi:schemaLocation="http://java.sun.com/xml/ns/persistence java.sun.com/xml/ns/persistence/persistence_1_0.xsd"><br>    <persistence-unit name="sample" transaction-type="RESOURCE_LOCAL"><br>        <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider><br>        <!-- <class>your.class.Here</class> --><br>        <exclude-unlisted-classes>false</exclude-unlisted-classes><br>        <properties><br>            <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/><br>            <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/test"/><br>            <property name="javax.persistence.jdbc.user" value="root"/><br>            <property name="javax.persistence.jdbc.password" value=""/><br>            <property name="eclipselink.logging.logger" value="JavaLogger" /><br>            <property name="eclipselink.logging.level" value="FINEST"/><br>                <!-- Can specify: create-tables, drop-and-create-tables --><br>            <property name="eclipselink.ddl-generation" value="create-tables"/><br>            <property name="eclipselink.ddl-generation.output-mode" value="database"/><br>            <property name="eclipselink.target-database" value="MYSQL"/><br>            <property name="eclipselink.jdbc.native-sql" value="true"/><br>        </properties><br>    </persistence-unit><br></persistence>

Скачать


Ccылки

* Source code was highlighted with Source Code Highlighter.
Tags:
Hubs:
Total votes 30: ↑27 and ↓3+24
Comments11

Articles