powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Паттерн декоратор для Servlet'a
47 сообщений из 47, показаны все 2 страниц
Паттерн декоратор для Servlet'a
    #38446269
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день !
Есть такой вопрос :

https://netbeans.org/kb/docs/javaee/ecommerce/page-views-controller_ru.html

При создании сервлета контроллера - в параметре urlPatterns указывается список всех замапленных на него URL.

А как в теле метода

Код: java
1.
protected void processRequest(HttpServletRequest request, HttpServletResponse response)



получить все значения в виде enum'а ?

Второй вопрос в продолжении первого :

Хочется в сервлетах иметь такую же возможность ,как в спринге - аннотации работаты с мапингом url -

описывая их через
Код: java
1.
@RequestMapping

.

Сейчас севрлет , если на него замаплено больше одного url - будет представлять из себя фабрику с набором проверок внутри метода processRequest - на причастность к urlPatterns - и реакцию на такие действия .

в самом простом случае это будет case if else -
где идет сравнение request.getServletPath() со значениями из urlPatterns .

А хочется получить возможность в сервлете использовать RequestMapping.

вопрос как?
...
Рейтинг: 0 / 0
Паттерн декоратор для Servlet'a
    #38446286
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что мешает взять любой web framework с нужными возможностями?
...
Рейтинг: 0 / 0
Паттерн декоратор для Servlet'a
    #38446359
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczЧто мешает взять любой web framework с нужными возможностями?
Например спринг :)

Ничто , вопрос в том что хочется получить это от спецификации . т.е. чтобы такая возможность была в самих сервлетах.

Например для начала можно создать свою аннотацию @RequestMapping

добавить несколько методов в сервлет - пометить их как @RequestMapping,

а потом в теле processRequest - смапить urlPatterns и RequestMapping.
...
Рейтинг: 0 / 0
Паттерн декоратор для Servlet'a
    #38446384
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а как в рантайме получить все значения urlPatterns ?
...
Рейтинг: 0 / 0
Паттерн декоратор для Servlet'a
    #38446566
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Atum1Сейчас севрлет , если на него замаплено больше одного url
какая цель вызывать один сервлет на несколько разных URL?
...
Рейтинг: 0 / 0
Паттерн декоратор для Servlet'a
    #38446735
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Atum1Сейчас севрлет , если на него замаплено больше одного url
какая цель вызывать один сервлет на несколько разных URL?

Цель такая сейчас сервлет имеет вид :

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
@WebServlet(, urlPatterns = {"/urlPatterns","/urlPatterns1","/urlPatterns2","/urlPatterns3"})
public class MyServlet extends HttpServlet {


    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

            WebServlet ws = this.getClass().getAnnotation(WebServlet.class);
            String[] patterns = ws.urlPatterns();


// тут класический if  на request.getServletPath()  -> "urlPatterns"  == patterns 

}



а Хочется писать как в спринге :


Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
    @RequestMapping("/urlPatterns")
    private void urlPatterns(HttpServletRequest request, HttpServletResponse response){
        System.out.println("urlPatterns");
        
    }


    @RequestMapping("/urlPatterns1")
    private void urlPatterns1(HttpServletRequest request, HttpServletResponse response){
        System.out.println("urlPatterns");
        
    }
...
Рейтинг: 0 / 0
Паттерн декоратор для Servlet'a
    #38446741
am_sasa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123какая цель вызывать один сервлет на несколько разных URL? например так работает REST и я тоже так делаю))
...
Рейтинг: 0 / 0
Паттерн декоратор для Servlet'a
    #38446743
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хочется создать "обертку" , чтобы вызовы из

processRequest

дергали по ключу request.getServletPath() - каждый свой метод

Код: java
1.
2.
3.
4.
5.
   @RequestMapping("/urlPatterns")
    private void urlPatterns(HttpServletRequest request, HttpServletResponse response){
        System.out.println("urlPatterns");
        
    }
...
Рейтинг: 0 / 0
Паттерн декоратор для Servlet'a
    #38446746
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
am_sasa,

Да и REST и Spring - все так делают .

почему бы не дать такую возможность в обычном sevlet 'е ?
...
Рейтинг: 0 / 0
Паттерн декоратор для Servlet'a
    #38446762
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Atum1почему бы не дать такую возможность в обычном sevlet 'е ?
Потому что JCP это очень инертный процесс и особенно тормозит развитие JEE, к которому, ИМХО, не должно быть таких строгих требований как в JSE.
...
Рейтинг: 0 / 0
Паттерн декоратор для Servlet'a
    #38446765
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczПотому что JCP это очень инертный процесс и особенно тормозит развитие JEE, к которому, ИМХО, не должно быть таких строгих требований как в JSE.

но можно же придумать механизм - на тех же аннотациях и аспектах, интерцепторах ,
который мог бы обеспечить такую схему работы сервлетов ?
...
Рейтинг: 0 / 0
Паттерн декоратор для Servlet'a
    #38446767
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Atum1но можно же придумать механизм - на тех же аннотациях и аспектах, интерцепторах ,
который мог бы обеспечить такую схему работы сервлетов ?
Конечно. Этот механизм называется Spring MVC.
...
Рейтинг: 0 / 0
Паттерн декоратор для Servlet'a
    #38446823
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
am_sasaREST
разве он не работает по принципу - URL рессурс ---> имя сервлета?
...
Рейтинг: 0 / 0
Паттерн декоратор для Servlet'a
    #38446861
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczКонечно. Этот механизм называется Spring MVC.

Да и тащить с собой кучу библиотек Спринга . Спринг это клей .


Как то глупо имея реализацию EE не иметь таких простых механизмов ?!

Да есть REST. но почему не сделать это в servlet
...
Рейтинг: 0 / 0
Паттерн декоратор для Servlet'a
    #38446873
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Atum1,
самое простое - URL - сервлет. 1 к 1-му.
А далее - спринг.
...
Рейтинг: 0 / 0
Паттерн декоратор для Servlet'a
    #38446874
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Atum1Да и тащить с собой кучу библиотек Спринга

На сервере дискета закончится?

Atum1. Спринг это клей .

Spring IoC это клей.
Spring MVC это web фреймверк.

Atum1Как то глупо имея реализацию EE не иметь таких простых механизмов ?!

Это ведь JEE, оно вообще ничего нормального не умеет.

Atum1Да есть REST. но почему не сделать это в servlet
Так исторически сложилось - JCP.
...
Рейтинг: 0 / 0
Паттерн декоратор для Servlet'a
    #38446918
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Atum1,
самое простое - URL - сервлет. 1 к 1-му.
А далее - спринг.

Да самое простое - одни сервлет один URL - это вырожденный вариант REST служб.


BlazkowiczЭто ведь JEE, оно вообще ничего нормального не умеет.


ну так тоже говорить нельзя .

Умеет c появление EJB 3, Servlet 3 , JPA, многое стало проще и красивее .
Даже , на мой взгляд , лучше чем в спринге.

Меньше кода , меньше библиотек, быстрее и проще разработка.

Но еще не все реализовано.
...
Рейтинг: 0 / 0
Паттерн декоратор для Servlet'a
    #38446947
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Atum1ну так тоже говорить нельзя .

Мне можно.

Atum1Умеет c появление EJB 3, Servlet 3 , JPA, многое стало проще и красивее .

Не смешно. EJB 3 этот тот же EJB 2 только с куцым CDI и упрощеным API. Ничего ведь существенно не изменилось.
JPA это кастрированая обертка над Hibernate.
Что нового в Servlet 3 сходу не скажу. Но не помню ничего такого чем бы сразу захотелось пользоваться.

Atum1Даже, на мой взгляд, лучше чем в спринге.

Ну, каждый имеет право на мнение. Конкретные примеры будут?

Atum1Меньше кода

Меньше чем в EJB 2? Переходи на Scala, кода станет ещё меньше.

Atum1 , меньше библиотек,

Весомый аргумент.

Atum1быстрее и проще разработка.

Чем в J2EE 1.4?

Atum1Но еще не все реализовано.
Воооот. Стандартная ситуация и JEE и, походу, теперь в JavaFX. "А вот за этой фигнюшечкой приходите через 2 года, когда будет следующая версия".
...
Рейтинг: 0 / 0
Паттерн декоратор для Servlet'a
    #38446988
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Atum1Да самое простое - одни сервлет один URL - это вырожденный вариант REST служб.
я бы сказала, что это - архитектура или принципы построения клиент-сервера в вебе.
Т.е. REST никак не относится к тому, один кусок кода вызывается по урл на Java (\\servlet_Name), или несколько кусков по If URL (surep_puper_servlet).

В том и был вопрос, какая разница аффтару делать один сервлет или несколько на каждый url.
Доводы у всех разные.
imho
...
Рейтинг: 0 / 0
Паттерн декоратор для Servlet'a
    #38447075
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczНе смешно. EJB 3 этот тот же EJB 2 только с куцым CDI и упрощеным API. Ничего ведь существенно не изменилось.
JPA это кастрированая обертка над Hibernate.
Что нового в Servlet 3 сходу не скажу. Но не помню ничего такого чем бы сразу захотелось пользоваться.


Ну, каждый имеет право на мнение. Конкретные примеры будут?

Как вариант : https://blogs.oracle.com/arungupta/entry/why_java_ee_6_is


Это простой холивар на тему что круче и что приятнее - javaee vs spring .

На данном этапе я не вижу особой разницы между этими подходами.


Скажу так spring - там как в наборе библиотек есть все и на все случаи жизни ... если проект под maven -
то думать надо совсем мало и принцип построения приложения на spring - хорошо описан .

Так же замечательно он описан и в схеме java ee :

1) Уровень постоянства - База
2) Прослойка в виде ORM
3) объектная модель POJO - Entity
4) Stateless бины как API над CRUD операциями
5) Уровень Фасадного API
5) Классы Контроллеры (Servlet)
6) Модель представления view (jsp)


Если есть аргументы типа - это есть в Спринг, но этого нет в Java EE и это очень нужно - буду признателен.
...
Рейтинг: 0 / 0
Паттерн декоратор для Servlet'a
    #38447120
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Atum1Как вариант : https://blogs.oracle.com/arungupta/entry/why_java_ee_6_is

Откровения ни о чем.
Ой, не смог настроить.
Ой, саппорт платный.
Ой, 10 мегабайт лишних.
Ой, без мавена не могу зависимости разруливать.
Ну, и прочий бред в том же духе. Могу по каждому пункту оспорить.

Atum1На данном этапе я не вижу особой разницы между этими подходами.

На туторилах её и нет. А вот когда командой пилишь один проект в течении нескольких лет, тут-то то нюансы и всплывают.

Atum1то думать надо совсем мало
Да-да. В этом случае только JEE.


Atum11) Уровень постоянства - База
JEE тут при чем? С NoSQL уже дружит?

Atum12) Прослойка в виде ORM
JPA стоит юзать только из-за Spring Data. Голый JPA этот тот же Hibernate с ограничениями.

Atum13) объектная модель POJO - Entity
А в Spring у нас как-то иначе. Ну и не путайте POJO это одно, бины это другое, Entity это третье.

Atum14) Stateless бины как API над CRUD операциями
Really? Какую пользу именно Stateless бины вам приносят? Теже POJO как сервисы чем хуже?

Atum15) Уровень Фасадного API

Это в JEE6 что?

Atum15) Классы Контроллеры (Servlet)
6) Модель представления view (jsp)
Ну, а вот тут JEE сливает по всем статьям.
Либо JSF, либо JSP. Ни то ни другое и рядом не валяется с адекватными фреймверками.

Atum1Если есть аргументы типа - это есть в Спринг, но этого нет в Java EE и это очень нужно - буду признателен.
Spring MVC, Spring Data, Http Invoker, JDBC Template. Это даже вообще не заглядывая в список проектов Spring.
...
Рейтинг: 0 / 0
Паттерн декоратор для Servlet'a
    #38447125
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczAtum1Если есть аргументы типа - это есть в Спринг, но этого нет в Java EE и это очень нужно - буду признателен.
Spring MVC, Spring Data, Http Invoker, JDBC Template. Это даже вообще не заглядывая в список проектов Spring.
Предвижу коментарии в стиле "а это мне не нужно"
...
Рейтинг: 0 / 0
Паттерн декоратор для Servlet'a
    #38447180
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczНе смешно. EJB 3 этот тот же EJB 2 только с куцым CDI и упрощеным API

Нашел хорошее видео по поводу
Context Dependency Injection in Java EE 6
YouTube Video
...
Рейтинг: 0 / 0
Паттерн декоратор для Servlet'a
    #38447231
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczJEE тут при чем? С NoSQL уже дружит?

Кажется, уже да :) Один индус подружил :)

https://blogs.oracle.com/arungupta/entry/java_ee_6_and_nosql

Классы Контроллеры (Servlet)

6) Модель представления view (jsp)

Ну, а вот тут JEE сливает по всем статьям.
Либо JSF, либо JSP. Ни то ни другое и рядом не валяется с адекватными фреймверками.


Сливает это да.

Да JSF - монстр на изучение которого уйдет жизнь.
Но JSP - очень гибок :) - особенно если писать в стиле php %)

Есть еще velocity. Но куму интересно представление сейчас на стороне сервера?

Сейчас все уходит на клиента , HTML5 CSS3 , AJAX ...

все что сейчас надо от сервера это отдать данные в виде json или xml
Сейчас Сервер все больше это просто набор REST сервисов.
Сейчас это набор ссылок по которым клиент получает отдельно данные и отдельно схемы как эти данные отобразить ...

Сейчас MVC - перешел (переходит) полостью на сторону клиента - локальное хранилище данных, отображение, поведение итд.
( http://www.ozon.ru/context/detail/id/8798187/ Веб-приложения на JavaScript)

и Это правильно . Задачи Сервера - отдать данные как можно большему количеству пользователей и как можно быстрее.

Со временем java форнт разработчик станет экзотической вакансией , его должен сменить JavaScript разработчик.
...
Рейтинг: 0 / 0
Паттерн декоратор для Servlet'a
    #38447240
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Atum1Context Dependency Injection in Java EE 6
особого упрощения от спринг я там не увидел , все тоже самое.

Всё да не всё. В любой моммент может оказаться как с интерцепторвами "ой, а мы не предусмотрели в спеке возможности инжектить в интерцепторы, поэтому наш хвалёный GF этого не умеет." В следующей версии, конечно исправят. Но в каждой всплывает что-то новое.

Atum1так что за список наоборот спасибо :) буду признателен если появится еще пара тройка действительно стоящих технологий и либ.

Ну берем список из той статьи

Web Container ✓ 53 MB (tcServer 2.6.3 Developer Edition)
т.е. как бы Web Container ничего не весит, а tcServer, ОГО! 53 MB. Можно подумать говна туда понапихано.
И почему именно tcServer. Я могу взять Jetty и прикрутить туда Spring без всяких придурошных дескрипторов и запаковать всё это в executable jar. JEE спецификация что на этот счет говорит?

Security ✓ 12 MB (Spring Security 3.1.0)
лолшто? Это он JAAS со Spring Security сравнил. Да?


Persistence ✓ 6.3 MB (Hibernate 4.1.0, required)
Окай. К 6й версии можно сказать подтянулись. JPA можно юзать. Тока накой он тут это сюда приплел? Hibernate это не Spring. Spring может юзать JPA. JEE до Spring Data ещё расти и расти.

Dependency Injection ✓ 5.3 MB (Framework)
Угу. https://java.net/jira/browse/GLASSFISH-20794
Уже писал выше. То сюда не инжектим. То туда не инжектим. То ваши POJO не понимает.

Web Services ✓ 796 KB (Spring WS 2.0.4)
Spring WS это фигня какая-то. А вот CXF рулит и заруливает голый JAXWS.

Messaging ✓ 3.4 MB (RabbitMQ Server 2.7.1)
Тоже ерунда. Берем любой MQ и пользуем. Можно подумать внутри JEE контейнера какой-то уникальный MQ живет и Spring его не может заюзать?

936 KB (Java client 936)OSGi ✓ 1.3 MB (Spring OSGi 1.2.1)
Ого! 400Кб разницы!!!

GlassFish and WebLogic (starting at 33 MB) 83.3 MB
GlassFish - глючное, тормозное говно с кучей индусского кода внутри.
А на счет WebLogic не вижу сравнения в цене с вышеуказанным tcServer.
...
Рейтинг: 0 / 0
Паттерн декоратор для Servlet'a
    #38447339
Лагман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczJEE до Spring Data ещё расти и расти.

Хм, а можно этот пунктик поподробнее?
...
Рейтинг: 0 / 0
Паттерн декоратор для Servlet'a
    #38447342
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Atum1Сейчас MVC - перешел (переходит) полостью на сторону клиента - локальное хранилище данных, отображение, поведение итд.
если бы было всё так просто.
Часто IT движется по спирали или шарахается из края в край.
Веб это гетерогенная среда, и подружить JS - Java не так просто и прямолинейно.
ЗЫ. В delphi MVC перешел на сторону компонента))
...
Рейтинг: 0 / 0
Паттерн декоратор для Servlet'a
    #38447454
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛагманХм, а можно этот пунктик поподробнее?
А что подробнее? Открываем features
http://projects.spring.io/spring-data-jpa
И прикидываем когда это всё может появиться в JEE.
...
Рейтинг: 0 / 0
Паттерн декоратор для Servlet'a
    #38447664
Лагман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так это небось работает всё через известное место, или не очень работает.
Полгода назад пробовал попользоваться - непонравилось, например, то что реализация которую прикручивает спринг под интерфейс как-то сильно зависит от того что написано в Query. Например нельзя сделать в одном интерфейсе методы с пагинацией и без. Как-то костыльненько.
...
Рейтинг: 0 / 0
Паттерн декоратор для Servlet'a
    #38447665
Лагман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Точнее, не без пагинации, а какая-то там тонкость другая была, жаль не помню.
...
Рейтинг: 0 / 0
Паттерн декоратор для Servlet'a
    #38447748
breath
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Atum1,
посмотрите jersey web services, в общем юзается так;

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
@Path("myPath")
public class MyService {

  @GET
  @Path("/info/detail")
  @Produces(MediaType.TEXT_HTML)
  @Consumes(MediaType.TEXT_HTML)
  @Interceptors(ResponseHeader.class)
  public String info() {
    return "0";
  }

  @GET
  @Path("/info1/detail")
  @Produces(MediaType.TEXT_HTML)
  @Consumes(MediaType.TEXT_HTML)
  @Interceptors(ResponseHeader.class)
  public String info1() {
    return "1";
  }
}



на уровне класса общий путь,
../myPath/info/detail
../myPath/info1/detail

если юзается jee ejb3, то можно добавить на класс @Stateless
...
Рейтинг: 0 / 0
Паттерн декоратор для Servlet'a
    #38447772
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz, судя по Вашим постам для Вас EE - это полное разочарование .

Ну все таки из названия Enterprise Edition - должно же как то следовать что технология создана для разработки Enterprise приложений.

Для меня JEE имеет джентельменский набор , да не густо, но с голоду не помрешь.

Spring - покроет реализацию EE в 2.5 раза .
Spring - это чревоугодие. в нем есть все.

Тему я и создавал с целью понять как сделать EE лучше и как его поднять на одну ступеньку ближе к Спрингу или хотя бы к названию Enterprise .

Пусть и на примере такой простой задачки .



Всё да не всё. В любой моммент может оказаться как с интерцепторвами "ой, а мы не предусмотрели в спеке возможности инжектить в интерцепторы, поэтому наш хвалёный GF этого не умеет." В следующей версии, конечно исправят. Но в каждой всплывает что-то новое.


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

Ну берем список из той статьи

Web Container ✓ 53 MB (tcServer 2.6.3 Developer Edition)
т.е. как бы Web Container ничего не весит, а tcServer, ОГО! 53 MB. Можно подумать говна туда понапихано.
И почему именно tcServer. Я могу взять Jetty и прикрутить туда Spring без всяких придурошных дескрипторов и запаковать всё это в executable jar. JEE спецификация что на этот счет говорит?



вообще любая связка типа jetty, resin, tomca + spring - очень эффективна.

по поводу jar - Думаю есть какой нибудь Embedded GlassFish.



Security ✓ 12 MB (Spring Security 3.1.0)
лолшто? Это он JAAS со Spring Security сравнил. Да?


Тут конечно и спорить смысла нет .

Но в наше время хорошо защищенное приложение это SSL , https , клиентский сертификат + Набор ролей и их проверка.

избыточность которая есть в Spring Security - это хорошо. Но нужно ли все это ? чтобы сделать действительно безопасное приложение?

Persistence ✓ 6.3 MB (Hibernate 4.1.0, required)
Окай. К 6й версии можно сказать подтянулись. JPA можно юзать. Тока накой он тут это сюда приплел? Hibernate это не Spring. Spring может юзать JPA. JEE до Spring Data ещё расти и расти.

Spring Data , как и JDBC Template - очень удобны в разработке.

У EE есть только EntityManager и JPA 2 . Достаточно ли этого этого ?

Blazkowicz ,ответьте на вопрос : можно ли просто использовать в качестве орм EclipseLink jpa2 или обязательно тянуть Hibernate ?
вот если переключить проект с Hibernate на EclipseLink - сколько специфических аннотаций из Hibernate использует большой проект ? Кеши ? Бизнес ключи ? что то еще ?
Hibernate - это целый мир , монстр-орм.

второй вопрос - к примеру Criteria API - зачем он нужен в проекте? Чем плох старый добрый HQL , JPQL , NamedQuery, NativeQuery ?



Messaging ✓ 3.4 MB (RabbitMQ Server 2.7.1)
Тоже ерунда. Берем любой MQ и пользуем. Можно подумать внутри EE контейнера какой-то уникальный MQ живет и Spring его не может заюзать?

Согласен.

EE - как бы просто спецификация - конкретная реализация может включать все что угодно.

Индус пишет это с одной целью - чтобы как можно больше программистов переходили на GF - это его работа. Агитировать за EE !
Этим всю жизнь занимался и SUN - продвигал java, продвигал свои продукты.

GlassFish and WebLogic (starting at 33 MB) 83.3 MB
GlassFish - глючное, тормозное говно с кучей индусского кода внутри.
А на счет WebLogic не вижу сравнения в цене с вышеуказанным tcServer.

ну у нас остался только jBoss 7 :) - все таки лучше чем GlassFish ;) хочется верить что не индусы писали.
...
Рейтинг: 0 / 0
Паттерн декоратор для Servlet'a
    #38447777
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
breathAtum1,
посмотрите jersey web services, в общем юзается так;

если юзается jee ejb3, то можно добавить на класс @Stateless

Ок. Большое спасибо! посмотрю.
...
Рейтинг: 0 / 0
Паттерн декоратор для Servlet'a
    #38447921
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Atum1судя по Вашим постам для Вас EE - это полное разочарование .
Ну, у меня хватает ума не обжигаться. Мне достаточно коментариев по форумам чтобы видеть, как народ мучается.

Atum1Ну все таки из названия Enterprise Edition - должно же как то следовать что технология создана для разработки Enterprise приложений.

Это всегда было аргументом JEE адептов. "Ведь это стандарт!"

Atum1Для меня JEE имеет джентельменский набор , да не густо, но с голоду не помрешь.

А кому-то хочется большего. И они двигают индустрию вперед. А JEE потом выборочно и коряво впитывает в себя технологии пятилетней давности.

Atum1Spring - покроет реализацию EE в 2.5 раза .
Spring - это чревоугодие. в нем есть все.

Вот мы и докатились до коментариев в стиле "а мне это не нужно", как я и предсказывал выше.

Atum1Тему я и создавал с целью понять как сделать EE лучше и как его поднять на одну ступеньку ближе к Спрингу или хотя бы к названию Enterprise .
Ничего не понял в потоке созданания. JEE уже Enterprise, зачем его делать ближе к названию Enterprise.
А так, есть предложения - вон JCP к вашим услугам.

Atum1по поводу jar - Думаю есть какой нибудь Embedded GlassFish.
Вот именно что "какой-нибудь", как и в случае с Tomcat, например.


Atum1Но в наше время хорошо защищенное приложение это SSL , https , клиентский сертификат
Это всё JSE и к JEE не относиться. Просто в туторилах по JEE Security если только про JAAS писать, то и материала будет с гулькин нос. А так приплетем SSL и уже ого-го какая у нас в JEE есть Security.

Atum1избыточность которая есть в Spring Security - это хорошо. Но нужно ли все это ? чтобы сделать действительно безопасное приложение?
Вам это не нужно. Поняли уже.

Atum1вот если переключить проект с Hibernate на EclipseLink - сколько специфических аннотаций из Hibernate использует большой проект ? Кеши ? Бизнес ключи ? что то еще ?
Hibernate - это целый мир , монстр-орм.
Никто с бухты барахты приложения не переводит с одной платформы на другую. В крупных системах это всегда затратно, даже если вы патаетесь следовать JEE.

Atum1второй вопрос - к примеру Criteria API - зачем он нужен в проекте? Чем плох старый добрый HQL , JPQL , NamedQuery, NativeQuery ?
Правильно. Зачем нам критерии? StringBuilder - наше всё.
Зачем нам type safe query dsl, ведь IDEA сама при рефакторинге исправит запросы.
Т.е. снова "нам это не нужно"

Atum1Индус пишет это с одной целью - чтобы как можно больше программистов переходили на GF - это его работа. Агитировать за EE !
Этим всю жизнь занимался и SUN - продвигал java, продвигал свои продукты.
При Sun такого не было. А у Oracle денег как грязи вот они и заказывают однотипные статьи на тему посмотрите какое ваш Spring говно.

Atum1ну у нас остался только jBoss 7 :) - все таки лучше чем GlassFish ;) хочется верить что не индусы писали.
Ну, как минимум, стабильнее, чем GF.
...
Рейтинг: 0 / 0
Паттерн декоратор для Servlet'a
    #38448168
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz, спасибо большое за ответы.
Вы наверное один из немногих пользователей форума, кто всегда может оперативно ответить на разные вопросы ,
я это очень ценю, спасибо.



А можно привести пару примеров как вы реально используете возможности :
1) Criteria API
2) Spring Security
...
Рейтинг: 0 / 0
Паттерн декоратор для Servlet'a
    #38448196
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Atum11) Criteria API
Формы поиска с десятком-другим параметров aka inquiry.
...
Рейтинг: 0 / 0
Паттерн декоратор для Servlet'a
    #38448238
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczAtum11) Criteria API
Формы поиска с десятком-другим параметров aka inquiry.

ок, понял о чем вы , да для обычного JPQL нужен StringBuilder с кучей if и кучей хитрых проверок.


А пример кода , такого изоморфного запроса на Criteria API ,можно увидеть?
...
Рейтинг: 0 / 0
Паттерн декоратор для Servlet'a
    #38448969
WGA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WGA
Гость
BlazkowiczAtum1судя по Вашим постам для Вас EE - это полное разочарование .
Ну, у меня хватает ума не обжигаться. Мне достаточно коментариев по форумам чтобы видеть, как народ мучается.Позвольте свои 5 копеек...
На самом деле жить с J2EE можно. ) У меня тоже год назад были о-о-ч-чень много WTF к этой платформе. Но, как оказалось, можно и жить с ней, и промышленную разработку вести. Даже на Glassfish индусского разлива... )

Куцый CDI напрасно обижаете - в чем-то он имеет преимущество даже перед Spring, как по мне. В детальное сравнение вдаваться не хочется - зачем холиварить. В общем, пусть лучше будет 2 платформы или фреймворка. ИМХО.
...
Рейтинг: 0 / 0
Паттерн декоратор для Servlet'a
    #38448974
WGA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WGA
Гость
Atum1...
ок, понял о чем вы , да для обычного JPQL нужен StringBuilder с кучей if и кучей хитрых проверок.Так в JPA тоже есть Criteria API. Вы разве не знали ?
...
Рейтинг: 0 / 0
Паттерн декоратор для Servlet'a
    #38449007
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WGAAtum1...
ок, понял о чем вы , да для обычного JPQL нужен StringBuilder с кучей if и кучей хитрых проверок.Так в JPA тоже есть Criteria API. Вы разве не знали ?

Знаю , использую.

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

вот и и спрашиваю какой от нее толк.

Мне подсказали что на Criteria - можно писать запросы для риалтайма :)

Я прошу пример такого запроса для формы поиска .
...
Рейтинг: 0 / 0
Паттерн декоратор для Servlet'a
    #38449108
WGA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WGA
Гость
Atum1Знаю , использую.

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

вот и и спрашиваю какой от нее толк.

Мне подсказали что на Criteria - можно писать запросы для риалтайма :)

Я прошу пример такого запроса для формы поиска .Простите, но это бред. С реляционными базами данных надо дружить... Если уж связались с ними.
...
Рейтинг: 0 / 0
Паттерн декоратор для Servlet'a
    #38449510
Atum1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WGAПростите, но это бред. С реляционными базами данных надо дружить... Если уж связались с ними.

Уважаемый , WGA. Вы о чем?

Я прошу пример формирования запроса на Criteria для конкретного случая : фильтр .

Просто писать на JPQL такие запросы через StringBuilder , как то совсем не очень

Простой пример - форма поиска шаблонов по параметрам :
1)По типу
2)По каналу
3)По статусу
4)По Дате
с: по:
5)По тексту


Выглядит как портянка .

вопрос как такое же писать на Criteria API ? Как раз и было высказано мнение что на Criteria это писать проще и легче.


Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
//option1:a1
//template_type:2
//option2:a2
//template_distr_type:1
//option3:a3
//template_status:1
//option4:a4
//create_datepicker1:01.04.2013
//create_datepicker2:24.04.2013
//option5:a5
//search_text:rty rty rty

 StringBuilder sql =  new StringBuilder("SELECT m FROM Template m ");       
 HashMap<String,Object> sqlparams = new HashMap<String, Object>();


            String option1 = (request.getParameter("option1"));
            if (option1 != null && option1.equals("a1")) {
                template_type  = ...
                
            }
            String option2 = (request.getParameter("option2"));
            if (option2 != null && option2.equals("a2")) {
                template_distr_type = ...
            }
            
            String option3 = (request.getParameter("option3"));
            if (option3 != null && option3.equals("a3")) {
                template_status = ...
            }
            
            String option4 = (request.getParameter("option4"));
            if (option4 != null && option4.equals("a4")) {
                try {
                    create_datepicker1 = ...
                    create_datepicker2 = ....
                } catch (ParseException ex) {

                }
            }
            String option5 = (request.getParameter("option5"));
            if (option5 != null && option5.equals("a5")) {
                like =....
            }
            
            if (template_type != null || template_distr_type != null || template_status != null || (create_datepicker1!=null && create_datepicker2 != null ) || like != null) {
                sql.append(" WHERE ");
                boolean flag1 = false;
                boolean flag2 = false;
                boolean flag3 = false;
                boolean flag4 = false;
                if (template_type != null) {
                    sql.append(" m.templateType=:templateType ");
                    sqlparams.put("templateType", template_type);
                    flag1 = true;
                }
                if (template_distr_type != null) {
                    if(flag1) sql.append(" AND ");
                    sql.append(" m.templateDistrType=:templateDistrType ");
                    sqlparams.put("templateDistrType", template_distr_type);
                    flag2 = true; 
                }
                if (template_status != null) {
                    if(flag1 || flag2)  sql.append(" AND ");
                    sql.append(" m.templateStatus=:templateStatus ");
                    sqlparams.put("templateStatus", template_status);
                    flag3 = true;
                }
                
                if(create_datepicker1 != null && create_datepicker2 != null){
                    if(flag1 || flag2 || flag3) sql.append(" AND ");
                    sql.append(" m.templateLoadDate BETWEEN  :start AND :end ");
                    sqlparams.put("start", create_datepicker1);
                    sqlparams.put("end", create_datepicker2);
                    flag4 = true;
                }
                if(like!=null && !like.isEmpty()){
                    if(flag1 || flag2 || flag3 || flag4) sql.append(" AND ");
                    sql.append(" m.templateName LIKE lower(:textlike) ");
                    like = like.replaceAll("%", "");
                    sqlparams.put("textlike", "%"+like+"%");
                }
            }
            
           
            
            sql.append(" ORDER BY  m.templateLoadDate DESC");
            
            List<Template> list = controller.findByCriteria(sql.toString() , sqlparams);

....


    public List<Template> findByCriteria(String sql, HashMap<String, Object> sqlparams) {
        TypedQuery<Template> q = getEntityManager().createQuery(sql, Template.class);
        if (sqlparams != null && !sqlparams.isEmpty()) {
            Set<String> keys = sqlparams.keySet();
            for (String key : keys) {
                Object keyvalue = sqlparams.get(key);
                q.setParameter(key, keyvalue);
            }
        }
        q.setMaxResults(40);
        return q.getResultList();
    }
...
Рейтинг: 0 / 0
Паттерн декоратор для Servlet'a
    #38449528
breath
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
открываете книжку Pro-JPA-Mastering-Persistence-Technology
C H A P T E R 9 Criteria API
целая глава
...
Рейтинг: 0 / 0
Паттерн декоратор для Servlet'a
    #38449599
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Atum1Я прошу пример формирования запроса на Criteria для конкретного случая : фильтр .

В тривиальном случае, он не сильно отличается от приведенного тобой. Хотя шума всё равно меньше.

Код: java
1.
2.
3.
4.
5.
6.
7.
       
 if (!isEmpty(paramA)) {
     criteria.add(Restrictions.eq("entity.propertyA", paramA));
 }
 if (!isEmpty(paramB)) {
     criteria.add(Restrictions.eq("entity.propertyB", paramB));
 }



Гораздо интереснее становится, когда внутри ещё нужны не тривиальные подзапросы, через DetachedCriteria, вот тут конкатенация строк вообще в нечто невоообразимой выльется.
...
Рейтинг: 0 / 0
Паттерн декоратор для Servlet'a
    #38449690
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Atum1Простой пример - форма поиска шаблонов по параметрам :
открою тайну - такое писать на любом ЯП выливается в рутинный и НЕ машинный-библиотечный код.
...
Рейтинг: 0 / 0
Паттерн декоратор для Servlet'a
    #38450063
WGA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WGA
Гость
Уважаемы Atum1,

Вы бы хоть почитали по ссылке , что я Вам предоставил. Так мы использовали бы одну терминологию )
Atum1Просто как я вижу - эта технология медленнее чем скомпилированные запросы , Criteria - это рантайм.Но в основном я об этом ) Нет никаких "скомпилированных" запросов. Есть понятие "препарированные запросы" - когда СУБД для запроса выполняет парсинг и отыскивает оптимальный план выполнения. Все последующие запросы того же типа обходятся "дешевле", поскольку только подменяются параметры. Для этого и служит класс PreparedStatement в JDBC. В Вашем случае ("форма поиска шаблонов по параметрам"), препарированных запросов получится больше, по одному на каждую комбинацию добавленных предикатов. Естественно, если вариантов много, есть вероятность немного просесть по производительности, но не сильно. Как-то так.

А Вы рассказываете как "космические корабли бороздят просторы Большого театра"... )
...
Рейтинг: 0 / 0
Паттерн декоратор для Servlet'a
    #38450100
WGA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WGA
Гость
BlazkowiczAtum1Я прошу пример формирования запроса на Criteria для конкретного случая : фильтр .

В тривиальном случае, он не сильно отличается от приведенного тобой. Хотя шума всё равно меньше.

Код: java
1.
2.
3.
4.
5.
6.
7.
       
 if (!isEmpty(paramA)) {
     criteria.add(Restrictions.eq("entity.propertyA", paramA));
 }
 if (!isEmpty(paramB)) {
     criteria.add(Restrictions.eq("entity.propertyB", paramB));
 }

Для простейших поисковых запросов можно обойтись циклом с наполнением chiteria ограничениями... Не всегда, но можно. Тогда вообще нужен один метод для всех запросов, на входе надо подать список ограничений, например, ["атрибут", "операция сравнения", "значение"].
...
Рейтинг: 0 / 0
47 сообщений из 47, показаны все 2 страниц
Форумы / Java [игнор отключен] [закрыт для гостей] / Паттерн декоратор для Servlet'a
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]