Простое веб-приложение на Groovy в среде Eclipse

Простое веб-приложение на Groovy в среде Eclipse

Да, в коробке с Groovy есть нечто, позволяющее делать сервлеты. Но по ряду причин мне оно не понравилось и поначалу я даже сделал некий такой вариант по-своему. Но там смешаный java и groovy код. А ведь если под рукой есть Eclipse, то можно обойтись без динамической компиляции груви...

Смысл в том, что плагин Eclipse будет компилировать *.groovy файлы в обычные классы java, и сервлет-контейнеру будет все равно, каким способом они были созданы. То есть, этап компиляции .groovy  в .class будет осуществлен на этапе разработки, и никаких дополнительных временнЫх затрат в процессе работы веб-приложения не будет. Еще один нюанс в том, что плагин будет сам отслеживать изменение файлов groovy в процессе разработки, компилировать их и рестартовать контейнер, то есть, отпадает необходимость самому веб-приложению заниматься этим. Иными словами, можно делать и так. Что это дает? Да ничего особенного, разве что возможность писать сервлеты на groovy — много это или мало каждый решает сам.

How to

Первое и основное. Ставим Eclipse со всем набором, нужным для веб-разработки. Я использую ту версию, что JEE. Потом понадобится плагин Groovy — я беру девелоперскую версию, полную ошибок, но вполне работоспособную и содержащую не самую древнюю версию groovy в себе

1. Создаем вебпроект

File -> new -> Dynamic Web Project

2. Настраиваем поддержку Groovy

a) project -> add Groovy nature

b) Далее, заходим в свойства проекта и устанавливаем в Groovy project properties Groovy compiler output location в build/classes

После этого и груви и ява компиляторы будут складывать свои бинарные файлы в одну и ту же директорию. Соответственно, мы можем смело назначить класс сервлета или фильтра в web.xml не беспокоясь о том, на каком языке он написан.

И напоследок.

В текущей версии плагина есть один гнусный нюанс, при котором в случае наличия в проекте и java и groovy кода, java билдер сработает после groovy билдера и полностью перепишет то, что было сделано непосильным трудом groovy билдера.

c) Поэтому в свойствах проекта заходим на вкладку Builders и перемещаем Groovy Builder в самый низ списка билдеров

3. создаем тестовый сервлет

src/TestServlet.groovy

import javax.servlet.*
import javax.servlet.http.*

public class TestServlet extends HttpServlet{
    public void service(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
        response.writer << "Hello from test servlet"
    }
}

 

WebContent/WEB-INF/web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
    <display-name>b2b-main</display-name>
    <welcome-file-list>
        <welcome-file>index.html</welcome-file>
    </welcome-file-list>
    <servlet>
        <description/>
        <servlet-name>Test</servlet-name>
        <servlet-class>TestServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>Test</servlet-name>
        <url-pattern>/test</url-pattern>
    </servlet-mapping>
</web-app>

 

Теперь можно запускать на сервере, генерировать WAR файлы и прочее, прочее.

Комментарии (0)

mem: 1165 total: 10 module: 5 xsl: 3