|
|
|
Как вызвать удалённый метод в EJB из GUI приложения?
|
|||
|---|---|---|---|
|
#18+
У меня есть Enterprise приложение, которое состоит из WAR - вебмодуля и EJB-модуля. В EJB-модуле есть Session Bean c удалённым интерфейсом: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. (RMI3-war - название проекта) Всё это работает на GlassFish3. И есть у меня вот такой вот сервлет, который можно вызвать запросом через браузер: http://127.0.0.1:8888/RMI3-war/MyServlet. На экране я вижу: Servlet MyServlet at /RMI3-war dddd Hello from EJB businessMethodR То есть (!) удалённый (!) бизнес-метод из EJB-модуля вызывается! Код сервлета: Код: sql 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. А как мне сделать то же самое из приложения с GUI? Например, из обычного Java-класса? Как мне вызвать бизнес-метод EJB-модуля из Java-приложения, обладающего GUI? Тут вроде, понятно - и WAR и EJB находятся на GlassFish - на одном сервере - в одном месте. Соответственно они как-то там находят друг друга по именам, точнее WAR находит EJB по имени и как-то вызывает его метод. А как быть, если у нас приложение, которое не на GlassFish? Оно же должно знать host и port (socket) где находится GlassFish... Если создать Enterprise Application CLient и вызвать в нём EJB-метод (воспользоваться вставкой кода), то получится вот это: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. В NetBeans это как-то работает. То есть System.out.println(newSessionBeanR.businessMethodR()); выводит строку "Hello from EJB businessMethodR". А из консоли 'java -jar RMI3-client.jar' вываливает исключения! Вот и вопрос: Этому приложению надо же знать сокет сервера, чтоб вызвать удалённый метод на сервере GlassFish, а где тут сокет? А нету тут нигде сокета! Нету метода, который бы просил сокет в качестве параметра. Есть просто: Код: sql 1. 2. Какая-то анотация @EJB и всё... Вот такая проблема. Если клиент - браузер, то понятно. А если клиент - хост где-то в сети, то не понятно как вызвать удалённый метод на сервере приложений. Может кто-нибудь помочь в этом вопросе, а то я запутался? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2012, 16:43:02 |
|
||
|
Как вызвать удалённый метод в EJB из GUI приложения?
|
|||
|---|---|---|---|
|
#18+
Вот и выросло поколение, которое пишет EJB и даже не знает что такое JNDI. Sun/Oracle своего добились. http://wiki.netbeans.org/CreatingEJB3UsingNetbeansAndGlassfish ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2012, 16:46:30 |
|
||
|
Как вызвать удалённый метод в EJB из GUI приложения?
|
|||
|---|---|---|---|
|
#18+
авторСоответственно они как-то там находят друг друга по именам, точнее WAR находит EJB по имени и как-то вызывает его метод. тебе надо разобраться как оно "находит" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2012, 16:48:45 |
|
||
|
Как вызвать удалённый метод в EJB из GUI приложения?
|
|||
|---|---|---|---|
|
#18+
автортебе надо разобраться как оно "находит" Через JNDI... да? http://wiki.netbeans.org/CreatingEJB3UsingNetbeansAndGlassfish Creating a Java Stand-Alone Client As mentioned above, you cannot use the @EJB annotation out of a Glassfish server environment, therefore in a Stand-Alone application you must use the JNDI. Below following an example of how to call a EJB from a Java Stand-Alone client. http://www.javable.com/columns/serv_side/workshop/10/ch5/ Кажется понимаю идею. Что-то типа DNS. Надо понять где тут сокеты зарыты. Тогда мне понятно станет, а так пока не понятно. авторBy default, the appserv-rt.jar brings a jndi.properties file, but I will show you how to create one. Why? Because when you are running the client in the machine different than the app server, you must override this file. Кажется что-то понимаю. Есть файл, в котором как раз прописаны сокеты. Надо его найти. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2012, 17:24:13 |
|
||
|
Как вызвать удалённый метод в EJB из GUI приложения?
|
|||
|---|---|---|---|
|
#18+
FAQ хотя бы прочитайте. Куча вопросов и ответов по вашей теме. http://glassfish.java.net/javaee5/ejb/EJB_FAQ.html На счет сокетов. Когда создаётся InitialContext(), то там прописывается URL к JNDI через properties. Но если использовать на клиенте либы именно из GlassFish, то там всё по-умолчанию уже прописано для сервера. В том числе URL с портами. Об этом тоже есть в FAQ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2012, 17:33:20 |
|
||
|
Как вызвать удалённый метод в EJB из GUI приложения?
|
|||
|---|---|---|---|
|
#18+
Почитал FAQ и http://wiki.netbeans.org/CreatingEJB3UsingNetbeansAndGlassfish Нашёл готовый проект http://forum.sources.ru/index.php?showtopic=339968. Почему-то он работает, а мой проект не работает. И то с оговоркой - работает только из под NetBeans'а, а из командной строки не работает. Пробовал запускать так: java -classpath "C:\Program Files\glassfish-3.1.1\glassfish\modules" -jar "D:\Tasks\Java\MyRMI\ForumExample\ClientEJB\ClientEJB\dist\ClientEJB.jar" java -classpath $GLASSFISH_HOME/glassfish/lib/gf-client.jar D:\Tasks\Java\MyRMI\ForumExample\ClientEJB\ClientEJB\dist\ClientEJB.jar java -cp "C:\Program Files\glassfish-3.1.1\glassfish\modules\glassfish-naming.jar" -jar D:\Tasks\Java\MyRMI\ForumExample\ClientEJB\ClientEJB\dist\ClientEJB.jar java -cp "C:\Program Files\glassfish-3.1.1\glassfish\modules\gf-client.jar;C:\Program Files\glassfish-3.1.1\glassfish\lib\javaee.jar;C:\Program Files\glassfish-3.1.1\glassfish\lib\appserv-rt.jar;C:\Program Files\glassfish-3.1.1\glassfish\lib\jndi-properties.jar" -jar D:\Tasks\Java\MyRMI\ForumExample\ClientEJB\ClientEJB\dist\ClientEJB.jar Вылазиет вот это: Код: sql 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. Ну, ладно... Скопировал код найденного проекта под чистую в свой проект. Не работает! Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. Включил в библиотеки каталоги C:\Program Files\glassfish-3.1.1\glassfish\modules и C:\Program Files\glassfish-3.1.1\glassfish\lib Включил в библиотеки файлы appserv-rt.jar и javaee.jar. Я так понимаю, раз код один и тот же, то проблема именно в подключаемых библиотеках. Есть у меня ещё 1 проект: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. Там вот такие исключения: Код: sql 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. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. Что не так-то? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2012, 12:35:39 |
|
||
|
Как вызвать удалённый метод в EJB из GUI приложения?
|
|||
|---|---|---|---|
|
#18+
не находит все библиотеки что используются. Надо найти и подключить. Можно в нетбинсе в том проекте что запускается открыть ветку либрариес и посмотреть что там подключено. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2012, 13:02:31 |
|
||
|
Как вызвать удалённый метод в EJB из GUI приложения?
|
|||
|---|---|---|---|
|
#18+
Ну, да. Это да. Но он не работает из командной строки сам по себе почему-то, хотя и тащит 50 МБайт библиотек. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2012, 13:07:10 |
|
||
|
Как вызвать удалённый метод в EJB из GUI приложения?
|
|||
|---|---|---|---|
|
#18+
С библиотеками, кажется разобрался. Но всё же... Если выполнить файл из командной строки: java -jar D:\Tasks\Java\MyRMI\EJBClient\dist\EJBClient.jar То получается вот такое: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. Читал где-то, что надо куда-то приткнуть Classpath... но что с ним делать и куда вписывать не понятно. По идее у меня и так все библиотеки лежат рядом с JAR'ником - какой ещё Classpath? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2012, 14:23:41 |
|
||
|
Как вызвать удалённый метод в EJB из GUI приложения?
|
|||
|---|---|---|---|
|
#18+
в факе описано ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2012, 14:30:03 |
|
||
|
Как вызвать удалённый метод в EJB из GUI приложения?
|
|||
|---|---|---|---|
|
#18+
То что там написано я читал: Включить $GLASSFISH_HOME/glassfish/lib/gf-client.jar в клиентский classpath. Предполагается, что классы приложения лежат в /home/user1/myclasses и главный клиентский класс называется acme.MyClient. java -classpath $GLASSFISH_HOME/glassfish/lib/gf-client.jar:/home/user1/myclasses acme.MyClient Отметьте для себя, что классы Java EE 6 API автоматически включаются в gf-client.jar, поэтому нет необходимости явно добавлять javaee.jar и в classpath. gf-client.jar ссылается на многие другие .jars из дирректории, в которую был установлен GlassFish, поэтому лучше ссылаться на него из установочной дирректории, чем копировать его и все другие .jars в другие места. Помните, что gf-client.jar находится в $GLASSFISH_HOME/modules/gf-client.jar в GlassFish v3. Я пробовал так: java -classpath $GLASSFISH_HOME/glassfish/lib/gf-client.jar:D:\Tasks\Java\MyRMI\EJBClient\dist EJBClient.jar java -classpath $GLASSFISH_HOME/glassfish/lib/gf-client.jar:D:\Tasks\Java\MyRMI\EJBClient\src\rmiclient RMIClient.java java -classpath $GLASSFISH_HOME/glassfish/lib/gf-client.jar -jar D:\Tasks\Java\MyRMI\EJBClient\dist\EJBClient.jar java -classpath C:\Program Files\glassfish-3.1.1\glassfish\lib\gf-client.jar -jar D:\Tasks\Java\MyRMI\EJBClient\dist\EJBClient.jar Создал переменную окружения CLASSPATH=C:\Program Files\glassfish-3.1.1\glassfish\lib\gf-client.jar И ничего не работает! Хотя, стоп! Пересобрал... И начало работать вот так: Label1 Label2 Exception: javax.naming.NoInitialContextException: Cannot instantiate class: com.sun.enterprise.naming.SerialInitContextFactory [Root exception is java.lang.ClassNotFoundException: com.sun.enterprise.naming.SerialInitContextFactory] Код: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. По крайней мере приложение запустилось! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2012, 15:23:15 |
|
||
|
Как вызвать удалённый метод в EJB из GUI приложения?
|
|||
|---|---|---|---|
|
#18+
Niky4000, Да сколько можно Вам одно и то же талдычить, что ClassNotFoundException выбрасывается тогда, когда не найдет необходимый класс. Вы ей-богу, как глухонемой. Прошу прощения за эмоциональность. Начиная с 3-го сообщения у Вас постоянно падает это исключение, неужели трудно сделать соответствующие выводы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2012, 15:32:16 |
|
||
|
Как вызвать удалённый метод в EJB из GUI приложения?
|
|||
|---|---|---|---|
|
#18+
BlazkowiczВот и выросло поколение, которое пишет EJB и даже не знает что такое JNDI. Sun/Oracle своего добились. http://wiki.netbeans.org/CreatingEJB3UsingNetbeansAndGlassfish угу ( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2012, 16:06:48 |
|
||
|
Как вызвать удалённый метод в EJB из GUI приложения?
|
|||
|---|---|---|---|
|
#18+
Мне не понятно как это так - в NetBeans работает, а само по себе нет. Начал подключать библиотеки из GlassFish Folder\modules и дошёл до этого: Код: sql 1. 2. 3. 4. В NetBeans это работает, а в консоли нет. Если добавить тупо все библиотеки, то не собирается, приходится как-то это вылавливать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2012, 19:27:08 |
|
||
|
Как вызвать удалённый метод в EJB из GUI приложения?
|
|||
|---|---|---|---|
|
#18+
Код: java 1. 2. 3. Патамушта ex.printStackTrace() надо использовать. Тогда станет ясно откуда NullPointerException. Рано вы за EJB взялись. Вам бы с Java разобраться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2012, 19:31:23 |
|
||
|
Как вызвать удалённый метод в EJB из GUI приложения?
|
|||
|---|---|---|---|
|
#18+
Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. Рано или не рано, но мне надо разобраться. А с Java обычными приложениями для меня всё понятно более менее. Я пока не могу понять почему в NetBeans работает нормально, а в консоли ошибки. Наверное, библиотеки .jar в NetBeans'е все есть, а когда я запускаю из консоли, то приложение их не находит. Может быть вот этого не хватает: at com.sun.enterprise.naming.impl.SerialContext.getORB(SerialContext.java:365) at com.sun.enterprise.naming.impl.SerialContext.getProviderCacheKey(SerialContext.java:372) at com.sun.enterprise.naming.impl.SerialContext.getRemoteProvider(SerialContext.java:402) at com.sun.enterprise.naming.impl.SerialContext.getProvider(SerialContext.java:347) at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:504) at com.sun.enterprise.naming.impl.SerialContext.lookup(SerialContext.java:455) Попробую поискать на jarvana.com Хотя com.sun.enterprise.naming.impl.SerialContext - это glassfish-naming.jar, который подключен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2012, 21:02:25 |
|
||
|
Как вызвать удалённый метод в EJB из GUI приложения?
|
|||
|---|---|---|---|
|
#18+
Смотрю я на это и вижу: Unable to acquire SerialContextProvider for SerialContext Что-то не так с SerialContextProvider for SerialContext... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2012, 21:05:27 |
|
||
|
Как вызвать удалённый метод в EJB из GUI приложения?
|
|||
|---|---|---|---|
|
#18+
Если на пальцах объяснять, то примерно так. За жизненным циклом компонентов и injection зависимостей отвечает контейнер. У тебя есть аннотация @EJB и контейнер такую аннотацию должен обработать. В Java EE есть три вида контейнеров: 1. EJB контейнер - разруливает зависимости EJB 2. Web контейнер - разруливает зависимости у web компонентов 3. Application контейнер (это как раз твой случай), разруливает зависимости у клиентских классов. Application контейнер зависит от поставщика, поэтому нужно смотреть документацию именно по серверу. NetBeans вся магию настройки Application контейнера берет на себя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2012, 22:03:29 |
|
||
|
Как вызвать удалённый метод в EJB из GUI приложения?
|
|||
|---|---|---|---|
|
#18+
vas0Если на пальцах объяснять, то примерно так. За жизненным циклом компонентов и injection зависимостей отвечает контейнер. У тебя есть аннотация @EJB и контейнер такую аннотацию должен обработать. В Java EE есть три вида контейнеров: 1. EJB контейнер - разруливает зависимости EJB 2. Web контейнер - разруливает зависимости у web компонентов 3. Application контейнер (это как раз твой случай), разруливает зависимости у клиентских классов. Application контейнер зависит от поставщика, поэтому нужно смотреть документацию именно по серверу. NetBeans вся магию настройки Application контейнера берет на себя. да нет в нетбинсе магии. При старте он в класспат указывает все библиотеки. Библиотеки можно посмотреть в дереве проекта в ветке либрариес. Как подключать библиотеки для запуска (в командной строке ключём, в переменной класспат или в манифесте жара) можно посмотреть в факе. это уже раз пять сказали. Нет смысла повторять. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2012, 22:56:48 |
|
||
|
Как вызвать удалённый метод в EJB из GUI приложения?
|
|||
|---|---|---|---|
|
#18+
1024, Не совсем так. Проблема ведь не в том что не все jar указаны. Грубого говоря, нужно получить stub`ы и запустить Application Client Container и уже "внутри" него свое приложение. Вот превое что нашел. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2012, 23:10:10 |
|
||
|
Как вызвать удалённый метод в EJB из GUI приложения?
|
|||
|---|---|---|---|
|
#18+
vas0, спасибо за ссылочку. http://blogs.steeplesoft.com/2011/02/java-ees-buried-treasure-the-application-client-container/ Внимательно всё почитал. Там создаётся Enterprise приложение. EJB-модуль, который затем deploy'тся на сервер. Потом создаётся Enterprise Client, который и есть ACC - application client container. Потом создаётся session bean и business method с удалённым интерфейсом. У меня это есть. Проблема с клиентом. Потом Enterprise Client deploy'тся, причём ручками из командной строки, на сервер. Если честно, не понял зачем. После того как клиетн был за'deploy'ен браузер обращается по адресу http://localhost:8080/EnterpriseApplication/ApplicationClient. Проходит пара минут в первый раз и как-то через JWS клиент запускается самостоятельно. Вот это я не понял. Как это происходит. После этого описываются XML и в конце говорится, что теперь вы знаете официальный путь что делать в случае, если этот клиент должен быть на удалённом хосте. So next time you need to access an EJB deployed to a remote application server, you know the official, portable way to get to it. В этих XML что-то я ничего такого не увидел - не увидел официального пути как это сделать. Сейчас попробую. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2012, 08:37:06 |
|
||
|
Как вызвать удалённый метод в EJB из GUI приложения?
|
|||
|---|---|---|---|
|
#18+
Создал вот такое приложение: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. Создал отдельный класс myJFrame, который просто рисует окошко с одним jLabel'ом и у которого есть метод установки текста jLabel'а. Немного повозившись с командной строкой, я за'deploy'л своё приложение так: asadmin deploy --retrieve G:\Java\MyRMI\ForumExample\EJBClientEnterprise\dist\localdir\ --force G:\Java\MyRMI\ForumExample\EJBClientEnterprise\dist\EJBClientEnterprise.ear Получилось. Но при попытке вызова приложения java -jar G:\Java\MyRMI\ForumExample\EJBClientEnterprise\dist\localdir\EJBClientEnterpriseClient.jar у меня получается вот это: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Если зайти на http://127.0.0.1:8888/EJBClientEnterprise/EJBClientEnterpriseClient.jar то браузер предлагает его скачать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2012, 09:40:26 |
|
||
|
Как вызвать удалённый метод в EJB из GUI приложения?
|
|||
|---|---|---|---|
|
#18+
Поколдовал ещё... За'deploy'ил из NetBeans'а. Только не кидайтесь в меня камнями, но у меня та же проблема... Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Я знаю, что класс не найден ejb/HelloRemote, который находится в проекте Lib, но что с этим делать? Я подкладывал его в ту же дирректорию, где и исполняемый jar'ник, но результат такой же. По крайней мере приложение стартует и я хотя бы окошко вижу - JFrame. Но в JLabel ничего нету! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2012, 10:20:44 |
|
||
|
Как вызвать удалённый метод в EJB из GUI приложения?
|
|||
|---|---|---|---|
|
#18+
Эх, наверное я в тот раз напутал - скачал не то. За'deploy'ил всё ещё раз из NetBeans'а и зашёл сюда: http://127.0.0.1:8888/MyEnterpriseApplication/EJBClientEnterprise EJBClientEnterprise находится в составе с MyEnterpriseApplication. Браузер предложил скачать JNLP файл. Ладно. Я скачал. Положил его рядом с jar'ником и ничего... В NetBeans'е опять всё работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2012, 10:31:11 |
|
||
|
Как вызвать удалённый метод в EJB из GUI приложения?
|
|||
|---|---|---|---|
|
#18+
Niky4000, Я никогда не работал с Glassfish. Но общий подход такой. Наше ejb приложение условно должно состоять из 2 частей, это интерфейсов и их реализаций. Пакую наши интерфейсы в один jar. Потом пакуюем нашу реализацию с интерфейсами в другой jar. Деплоем второй jar на сервер. Теперь первый jar(c интерфейсами) подключаем к нашему десктоп приложению, а также подключаем клиентские библиотеки нашего сервера. В Jboss этот файл назывался jboss-client-all.jar. Теперь про ваш случай. У вас явно нет в classpath нужных библиотек, внимательно прочитайте в документации к серверу приложения что нужно тащить на клиента. Ещё одна важная деталь версии jar c интерфейсами должны совпадать с версией на сервере и клиенте. P.S JNLP - это Java Web Start ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2012, 10:52:49 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=37667951&tid=2131633]: |
0ms |
get settings: |
22ms |
get forum list: |
22ms |
check forum access: |
6ms |
check topic access: |
6ms |
track hit: |
40ms |
get topic data: |
19ms |
get forum data: |
5ms |
get page messages: |
129ms |
get tp. blocked users: |
3ms |
| others: | 366ms |
| total: | 618ms |

| 0 / 0 |
