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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> JSP — с чего начать? 
V
    Опции темы
qnub
Дата 22.5.2008, 05:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



спасибо, понял...
PM MAIL   Вверх
ivg
Дата 22.8.2008, 15:58 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Autonomous R&D
**


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

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



to diablero, есть проблема в вашем проекте связанная с использованием JPA EntityManager. Из исходников последней версии Infinite1.1.4.7, доступной на форуме (в этом посте), можно увидеть, что все менеджеры используют один и тот же объект EntityManager, созданный в синглтоне Infinite. То есть по сути объект EntityManager единственный на всё приложение и его используют все потоки в многопоточном web-приложении. Цитата из Hibernate EntityManager reference:
Цитата

An EntityManager is an inexpensive, non-threadsafe object that should be used once, for a single business process, a single unit of work, and then discarded. An EntityManager will not obtain a JDBC Connection (or a Datasource) unless it is needed, so you may safely open and close an EntityManager even if you are not sure that data access will be needed to serve a particular request. (This becomes important as soon as you are implementing some of the following patterns using request interception.)
 Возможно в EJB контейнерах с использованием dependency injection проблем с многопоточным доступом можно избежать, но не в сервлет-контейнере. Предлагаемое решение: В синглтоне Infinite хранить инициализированный объект EntityManagerFactory, в начале обработки запроса создавать EntityManager em = EntityManagerFactory#createEntityManager(); и помещать его в ThreadLocal, тогда в менеджерах не хранить его, получать из ThreadLocal, ну и соответственно в конце обработки запроса EntityManager#close(); и удалить из ThreadLocal.
PS: По мотивам этого топика

Это сообщение отредактировал(а) ivg - 22.8.2008, 23:33
PM MAIL   Вверх
KasDmi
Дата 27.1.2009, 11:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 21.1.2009
Где: Обнинск, Россия

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



Добрый день! Спасибо за отличный квест! Тоже пытаюсь его пройти и столкнулся с небольшой проблемой на этапе перехода с моков на бд. Использую Oracle 10g и при выполнении проекта вылетает эксепшн:
Код

Exception in thread "main" javax.persistence.PersistenceException: invalid persistence.xml
    at org.hibernate.ejb.packaging.PersistenceXmlLoader.loadURL(PersistenceXmlLoader.java:72)
    at org.hibernate.ejb.packaging.PersistenceXmlLoader.deploy(PersistenceXmlLoader.java:89)
    at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:222)
    at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:125)
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:83)
    at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:60)
    at ru.testinglist.Main.init(Main.java:46)
    at test.TestMock.main(TestMock.java:44)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:585)
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:90)
Caused by: org.xml.sax.SAXParseException: cvc-elt.1: Cannot find the declaration of element 'persistence'.
    at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:236)
    at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error(ErrorHandlerWrapper.java:172)
    at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:382)
    at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:316)
    at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.handleStartElement(XMLSchemaValidator.java:1944)
    at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.startElement(XMLSchemaValidator.java:705)
    at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:330)
    at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl$NSContentDispatcher.scanRootElementHook(XMLNSDocumentScannerImpl.java:779)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(XMLDocumentFragmentScannerImpl.java:1794)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:368)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:834)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:764)
    at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:148)
    at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:250)
    at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:292)
    at org.hibernate.ejb.packaging.PersistenceXmlLoader.loadURL(PersistenceXmlLoader.java:70)
    ... 12 more


persistence.xml
Код

<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"
   version="1.0">
    <persistence-unit name="Main" transaction-type="RESOURCE_LOCAL">
        <provider>org.hibernate.ejb.HibernatePersistence</provider>
        <class>ru.testinglist.bean.Answer</class>
        <class>ru.testinglist.bean.Question</class>
        <properties>
            <property name="hibernate.connection.username" value="dkashlinov"/>
            <property name="hibernate.connection.driver_class" value="oracle.jdbc.pool.OracleDataSource"/>
            <property name="hibernate.connection.password" value="dkashlinov"/>
            <property name="hibernate.connection.url" value="jdbc:oracle:thin:@10.0.0.80:1521:PORTAL"/>
            <property name="hibernate.dialect" value="org.hibernate.dialect.Oracle10gDialect"/>
        </properties>
    </persistence-unit>
</persistence>


Не могу разобраться что же не так, поиск в инете пока результатов не принёс.. ((
PM MAIL   Вверх
batigoal
Дата 27.1.2009, 12:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

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



Везде советуют проверить 
Цитата

 xmlns="http://java.sun.com/xml/ns/persistence"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/per...0.xsd"
   version="1.0"

Но вроде все правильно с этим... Может, просто пр запуске не удается подключиться к этим УРЛам?


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
KasDmi
Дата 27.1.2009, 12:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 21.1.2009
Где: Обнинск, Россия

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



Всё, разобрался. Сделал такую же структуру папок как у diablero и добавил все необходимые библиотеки. Всё работает! smile

Это сообщение отредактировал(а) KasDmi - 30.1.2009, 14:29
PM MAIL   Вверх
xaoc3dgraph
Дата 19.2.2009, 17:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 7.10.2008
Где: UA Запорожье

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



Stampede, огромное Спасибо за такое дело!.
Правда жалко что все закончилось.
Если Вам нетрудно можете вкратце рассказать про реализацию ЧПУ, в данном контексте Worker, Page.
Заранее спасибо 
PM MAIL   Вверх
xaoc3dgraph
Дата 20.2.2009, 09:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 7.10.2008
Где: UA Запорожье

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



Итак вроде разобрался.
Может что-то делаю не так, прошу поправить.
Начнем с того что я пытаюсь написать блог.
Для начала создаю класс утилит с функцией, которая будет преобразовывать наши названия, в ЧПУ 
Код


 public class URLConverter {
/*******************************************************************************
                                Variables
*******************************************************************************/
    private static final Logger logger = Logger.getLogger(URLConverter.class);
/*******************************************************************************
                                Methods
*******************************************************************************/
    /**
    * Constructor
    */
    public URLConverter(){
        logger.info("Initialize");
    }
    public static String toFriendlyURL(String name){
        //Удаляем лишние знаки
        String tmp = name;
        tmp = tmp.replaceAll("[^0-9а-яА-Яa-zA-Z ]", "").trim().toLowerCase();
       //Заменяем пробелы знаком "_"
        tmp = tmp.replaceAll("\\s", "_");

        char[] cArray = tmp.toCharArray();
        StringBuffer result = new StringBuffer(cArray.length);
        for (char c : cArray) {
            result.append(replace(c));
        }
        return result.toString();
    }
    private static String replace(char c){
            if(c == 'а'){return String.valueOf('a');}
            else if(c == 'б'){return String.valueOf('b');}
            else if(c == 'в'){return String.valueOf('v');}
            else if(c == 'г'){return String.valueOf('g');}
            else if(c == 'д'){return String.valueOf('d');}
            else if(c == 'е'){return String.valueOf('e');}
            else if(c == 'ё'){return String.valueOf('e');}
            else if(c == 'ж'){return String.valueOf('j');}
            else if(c == 'з'){return String.valueOf('z');}
            else if(c == 'и'){return String.valueOf('i');}
            else if(c == 'й'){return String.valueOf('y');}
            else if(c == 'к'){return String.valueOf('k');}
            else if(c == 'л'){return String.valueOf('l');}
            else if(c == 'м'){return String.valueOf('m');}
            else if(c == 'н'){return String.valueOf('n');}
            else if(c == 'о'){return String.valueOf('o');}
            else if(c == 'п'){return String.valueOf('p');}
            else if(c == 'р'){return String.valueOf('r');}
            else if(c == 'с'){return String.valueOf('s');}
            else if(c == 'т'){return String.valueOf('t');}
            else if(c == 'у'){return String.valueOf('u');}
            else if(c == 'ф'){return String.valueOf('f');}
            else if(c == 'х'){return String.valueOf('h');}
            else if(c == 'ц'){return String.valueOf('c');}
            else if(c == 'ч'){return String.valueOf("ch");}
            else if(c == 'ш'){return String.valueOf('w');}
            else if(c == 'щ'){return String.valueOf('w');}
            else if(c == 'ы'){return String.valueOf('i');}
            else if(c == 'ь'){return String.valueOf('b');}
            else if(c == 'э'){return String.valueOf('e');}
            else if(c == 'ю'){return String.valueOf("yu");}
            else if(c == 'я'){return String.valueOf("ya");}
        return String.valueOf(c);
    }
}

Потом в бинах создаем поле url и функцию получения урл.
У меня бин Section - разделы
бин Article - статья

Код

public class Section implements Serializable {
.....
  @Column(name = "url", length = 50)
  private String url;

    public String getUrl() {
        return url;
    }

    public void setUrl(String url) {
        this.url = url;
    }


И в функции где у нас устанавливается название раздела, делаем преобразование, названия в ЧПУ

Код

   public void setName(String name) {
        this.name = name;
        this.url = URLConverter.toFriendlyURL(name);
    }


Аналогично в Article, только добавляю к url расширение .shtml(например, java_eto_nawe_vse.shtml)
Код

   public void setName(String name) {
        this.name = name;
        this.url = URLConverter.toFriendlyURL(name) + ".shtml";
    }



Далее качаем UrlRewriteFilter.

Кладем библиотеку.
В web.xml пишем
Код

    <filter>
       <filter-name>UrlRewriteFilter</filter-name>
       <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
    </filter>
    <filter-mapping>
       <filter-name>UrlRewriteFilter</filter-name>
       <url-pattern>/*</url-pattern>
   </filter-mapping>

и создаем файлик в WEB-INF urlrewrite.xml который будет реврайтить наши запросы 
Код

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 2.6//EN"
        "http://tuckey.org/res/dtds/urlrewrite2.6.dtd">
<urlrewrite>

   <rule>
      <from>/([a-z]+)/articles/(([a-z _]+).shtml)</from><!-- /java/articles/sozdaem_velocity_template.shtml rewrite to  /article.shtml?sn=java&an=sozdaem_velocity_template.shtml -->
      <to>/article.shtml?sn=$1&amp;an=$2</to>
   </rule>

   <rule>
      <from>/([a-z]+)/articles/</from><!-- /java/articles/ rewrite to  /article.shtml?sn=java-->
      <to>/article.shtml?sn=$1</to>
   </rule>
</urlrewrite>


Ну а далее разобрать параметры в воркере и получить необходимые данные думаю несложно.
все.

Это сообщение отредактировал(а) xaoc3dgraph - 20.2.2009, 09:49
PM MAIL   Вверх
Stampede
Дата 20.2.2009, 10:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гносеолог
**


Профиль
Группа: Участник Клуба
Сообщений: 963
Регистрация: 25.4.2005
Где: Calgary, Alberta, Canada

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



xaoc3dgraph, хорошо что разобрались, только вы начали с ложной исходной посылки - что УРЛы изначально должны быть монстроидального вида.

Тут что важно понимать? Что пэхэпэшники не от хорошей жизни стали применять mod_rewrite, а потому что у них все наработки были в кривых УРЛах, и mod_rewrite позволял перевести имеющиеся вебсайты на ЧПУ малой кровью, ничего принципиально не меняя в логике.

Но вы-то ведь все с нуля делаете, вас не тяготит груз тяжелой наследственности!

Поэтому все, что нужно, чтобы сделать сайт с ЧПУ - просто заранее продумать схему адресации ЧПУ.

Еще раз смотрим на мой вебсайт. Проводим мышкой над  ссылками, элементами навигации, кнопками и т. д., смотрим в статусной строке браузера на вид УРЛа. Чувствуется структура? Правильно, чувствуется. Потому что это было едва ли не первое, с чего начиналось проектирование вебсайта.

И вам никто не мешает сделать так же smile



--------------------
"If you want something done right, do it yourself"
По секрету: выучить английский - реально!
PM WWW   Вверх
xaoc3dgraph
Дата 20.2.2009, 12:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 7.10.2008
Где: UA Запорожье

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



Спасибо за ответ, буду продумывать структуру.
Просто так понятно что за ссылка например. /java/articles/java_start.shtml
раздел java статья java start.
Меня пугают) ссылки вида article.shtml?sectiton_id=12&article_id=22, я думаю пользователю ненужно видеть такую информацию.


Это сообщение отредактировал(а) xaoc3dgraph - 20.2.2009, 12:35
PM MAIL   Вверх
Omut
Дата 17.3.2009, 22:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Хочется спросить, а почему за несколько лет так и не поменяли название темы? Наверняка сотни начинающих заходили сюда, чтобы посмотреть, как по-быстрому сваять  первый сайтик на JSP. А тут  логгирование, персистентность.. А когда через пару десятков страниц наконец-то дошли до вью, то опять-таки не JSP, а Velocity.
PM MAIL   Вверх
Stampede
Дата 17.3.2009, 22:35 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гносеолог
**


Профиль
Группа: Участник Клуба
Сообщений: 963
Регистрация: 25.4.2005
Где: Calgary, Alberta, Canada

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



Дак потому и не поменяли, ибо слово JSP - это единственное, что целевая аудитория смутно когда-то слышала о сабже. Если назвать тему так, чтобы это отражало суть, по типу "Разработка MVC фреймворка с персистенцией, логированием и шаблонированием на Velocity", большинству потенциально заинтересованных и в голову бы не пришло, что это именно то, что им нужно.



--------------------
"If you want something done right, do it yourself"
По секрету: выучить английский - реально!
PM WWW   Вверх
Platon
Дата 18.3.2009, 08:53 (ссылка) |    (голосов:4) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1801
Регистрация: 25.4.2006

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



Ай-ай, товарищ Stampede, вербуете ;)
На вывеске значится "Пив клуб", а внутри "военкомат"

PM MAIL ICQ   Вверх
Stampede
Дата 18.3.2009, 08:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гносеолог
**


Профиль
Группа: Участник Клуба
Сообщений: 963
Регистрация: 25.4.2005
Где: Calgary, Alberta, Canada

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



Platon,  smile

smile


--------------------
"If you want something done right, do it yourself"
По секрету: выучить английский - реально!
PM WWW   Вверх
Omut
Дата 18.3.2009, 09:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(Stampede @  17.3.2009,  22:35 Найти цитируемый пост)
"Разработка MVC фреймворка с персистенцией, логированием и шаблонированием на Velocity"

"В каждой шутке есть доля шутки"©
Как фреймворк то хоть называться будет? Чтоб знать, какие потом книги скачивать, типа "ххх IN Acnion", "xxx in 21 Days"  Breeze? Надеюсь официальный сайт будет и на русском smile 
Извиняюсь за оффтоп
PM MAIL   Вверх
Stampede
Дата 18.3.2009, 09:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гносеолог
**


Профиль
Группа: Участник Клуба
Сообщений: 963
Регистрация: 25.4.2005
Где: Calgary, Alberta, Canada

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



Цитата(Omut @  18.3.2009,  00:14 Найти цитируемый пост)
Как фреймворк то хоть называться будет? Чтоб знать, какие потом книги скачивать, типа "ххх IN Acnion", "xxx in 21 Days"  Breeze?


Нет, Omut, Бриз - это Бриз, это совершенно отдельная вещь. А фреймворк надо назвать так, как его и назвал diablero - Infinite. По-моему, будет только справедливо.



--------------------
"If you want something done right, do it yourself"
По секрету: выучить английский - реально!
PM WWW   Вверх
Страницы: (29) « Первая ... 25 26 [27] 28 29 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.1858 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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