Я хочу реализовать собственную модель идентификации, чтобы подключиться к частному веб-сервису, предоставляющему информацию о пользователе.
Поэтому я следовал инструкциям на http://docs.jboss.com/jbportal/v2.7.1/referenceGuide/html/identity.html.
Я использую JBoss Portal 2.7.2 с JBoss AS 4.2.3; Java-версия 1.6.0_29
Вот шаги, которые я сделал:
Создание нового проекта maven, фрагмент pom.xml:
<dependency>
<groupId>org.jboss.portal.identity</groupId>
<artifactId>identity-identity</artifactId>
<version>1.0.7</version>
<scope>provided</scope>
</dependency>
Реализация пользовательского интерфейса:
package com.mycompany.myIdentity;
import org.jboss.portal.identity.IdentityException;
import org.jboss.portal.identity.User;
public class MyUserImpl implements User {
...
}
Упакован в файл JAR и развернут (= скопирован) на
\ JBoss-портал-2.7.2 \ сервер \ умолчанию \ Deploy \ JBoss-portal.sar \ Lib.
Изменения в \ jboss-portal-2.7.2 \ server \ default \ deploy \ jboss-portal.sar \ conf \ identity \ identity-config.xml,
замена существующего модуля пользовательского типа на новый (не требуется никакой конфигурации):
<module>
<type>User</type>
<service-name>portal:service=Module,type=User</service-name>
<class>com.mycompany.myIdentity.MyUserImpl</class>
<config/>
</module>
После запуска сервера двойным щелчком мыши запустите run.bat и просмотрите сайт http://localhost:8080/portal
Я получаю следующее исключение:
исключение
javax.servlet.ServletException: org.hibernate.HibernateException: невозможно найти текущую транзакцию JTA
org.jboss.portal.server.servlet.PortalServlet.service (PortalServlet.java:278)
javax.servlet.http.HttpServlet.service (HttpServlet.java:803)
org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter (ReplyHeaderFilter.java:96)
первопричина
org.hibernate.HibernateException: невозможно найти текущую транзакцию JTA
org.hibernate.context.JTASessionContext.currentSession (JTASessionContext.java:61)
org.hibernate.impl.SessionFactoryImpl.getCurrentSession (SessionFactoryImpl.java:544)
org.jboss.portal.core.impl.model.portal.PersistentPortalObjectContainer.getObjectNode (PersistentPortalObjectContainer.java:252)
org.jboss.portal.core.impl.model.portal.AbstractPortalObjectContainer.getContext (AbstractPortalObjectContainer.java:112)
org.jboss.portal.core.impl.model.portal.AbstractPortalObjectContainer.getContext (AbstractPortalObjectContainer.java:81)
org.jboss.portal.core.model.portal.DefaultPortalCommandFactory.doMapping (DefaultPortalCommandFactory.java:72)
org.jboss.portal.core.controller.Controller.handle (Controller.java:252)
org.jboss.portal.server.RequestControllerDispatcher.invoke (RequestControllerDispatcher.java:51)
org.jboss.portal.common.invocation.Invocation.invokeNext (Invocation.java:131)
org.jboss.portal.common.invocation.Invocation.invoke (Invocation.java:157)
org.jboss.portal.server.servlet.PortalServlet.service (PortalServlet.java:252)
javax.servlet.http.HttpServlet.service (HttpServlet.java:803)
org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter (ReplyHeaderFilter.java:96)
Я получаю то же исключение даже без развертывания файла jar, просто изменяя файл identity-config.xml. Итак, я предполагаю
что моя банка вообще не загружена. Более того, мой новый модуль не имеет ничего общего с базами данных и поэтому не требует транзакций JTA.
Так чего мне не хватает, чтобы заставить эту штуку работать?
Заранее спасибо за помощь.
ОБНОВЛЕНИЕ 1:
Привет еще раз!
Мне удалось немного продвинуться, внимательно изучив файлы журнала сервера. Сервер не может разобрать
XML-файл identity-config.xml, поэтому после некоторых экспериментов я смог заставить его проанализировать этот новый файл:
<identity-configuration>
<datasources/>
<modules>
<module>
<type>User</type>
<implementation>CUSTOM</implementation>
<config/>
</module>
<module>
<type>Role</type>
<implementation>CUSTOM</implementation>
<config/>
</module>
<module>
<type>Membership</type>
<implementation>CUSTOM</implementation>
<config/>
</module>
<module>
<type>UserProfile</type>
<implementation>CUSTOM</implementation>
<config/>
</module>
</modules
<options/>
</identity-configuration>
Мне пришлось добавить следующий код в \ jboss-portal-2.7.2 \ server \ default \ deploy \ jboss-portal.sar \ conf \ identity \ standardidentity-config.xml
<module>
<type>User</type>
<implementation>CUSTOM</implementation>
<service-name>portal:service=Module,type=User</service-name>
<class>com.myCompany.MyUser</class>
<config />
</module>
<module>
<type>Role</type>
<implementation>CUSTOM</implementation>
<service-name>portal:service=Module,type=Role</service-name>
<class>com.myCompany.MyRole</class>
<config />
</module>
<module>
<type>Membership</type>
<implementation>CUSTOM</implementation>
<service-name>portal:service=Module,type=Membership</service-name>
<class>com.myCompany.MyMembership</class>
<config />
</module>
<module>
<type>UserProfile</type>
<implementation>CUSTOM</implementation>
<service-name>portal:service=Module,type=UserProfile</service-name>
<class>com.myCompany.MyUserProfile</class>
<config />
</module>
Как видите, я также реализовал роль, членство и профиль пользователя.
После этого сервер пожаловался на некоторые недостающие свойства, необходимые для этих классов. Поэтому я добавил следующее
каждому из этих четырех классов:
IdentityContext identityContext;
ServiceJNDIBinder jndiBinder;
String moduleType;
public String getModuleType() {
return moduleType;
}
public void setModuleType(String moduleType) {
this.moduleType = moduleType;
}
public ServiceJNDIBinder getJndiBinder() {
return jndiBinder;
}
public void setJndiBinder(ServiceJNDIBinder jndiBinder) {
this.jndiBinder = jndiBinder;
}
public IdentityContext getIdentityContext() {
return identityContext;
}
public void setIdentityContext(IdentityContext identityContext) {
this.identityContext = identityContext;
}
К сожалению, сервер все еще не удовлетворен этим. Теперь я нахожу следующее исключение в моем журнале сервера и
Я понятия не имею, как решить эту проблему:
2011-11-21 08: 55: 54,696 ОШИБКА [org.jboss.portal.portlet.impl.container.LifeCycle] Невозможно запустить объект org.jboss.portal.portlet.container.PortletInitializationException: портлет CMSAdminPortlet выбросил портлетисключение во время инициализации в org.jboss.portal.portlet.impl.jsr168.PortletContainerImpl.start (PortletContainerImpl.java:284) в org.jboss.portal.portlet.impl.container.PortletContainerLifeCycle.invokeStart (Portlet)org.jboss.portal.portlet.impl.container.LifeCycle.managedStart (LifeCycle.java:92) в org.jboss.portal.portlet.impl.container.PortletFilterLifeCycle.startDependents (PortletFilterLifeCycle.javabo) :74:74portal.portlet.impl.container.LifeCycle.managedStart (LifeCycle.java:128) в org.jboss.portal.portlet.impl.container.PortletApplicationLifeCycle.startDependents (PortletApplicationLifeCycle.java:339) в org.jlet.jp.impl.container.LifeCycle.managedStart (LifeCycle.java:128) в org.jboss.portal.portlet.deployment.jboss.PortletAppDeployment.start (PortletAppDeployment.java:226) в org.jboss.portal.core.deployment.jboss.PortletAppDeployment.start (PortletAppDeployment.java:94) в org.jboss.portal.server.deployment.jboss.DepartConnect.jboss.DepartConnectDeploymentContext.java:99) в org.jboss.portal.server.deployment.jboss.PortalDeploymentInfoContext.add (PortalDeploymentInfoContext.java:86) в org.jboss.portal.server.deployment.jboss.ServerDeployerj.134) в org.jboss.portal.server.deployment.jboss.AbstractDeploymentFactory.registerFactory (AbstractDeploymentFactory.java:113) в org.jboss.portal.server.deployment.jboss.AbstractDeploymentFactory.start (AbstractDepavag15).jboss.portal.portlet.deployment.jboss.PortletAppDeploymentFactory.start (PortletAppDeploymentFactory.java:147) в sun.reflect.NativeMethodAccessorImpl.invoke0 (собственный метод) в sun.reflect.NativeMethol.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:25) в java.lang.reflect.Method.invoke (Method.java:597) в org.jboss.portal.jems.as.system.JBossServiceModelMBean $ ServiceMixin.execute (JBljSMe) (JBossSevice)по адресу org.jboss.portal.jems.as.system.JBossServiceModelMBean $ ServiceMixin.startService (JBossServiceModelMBean.java:452) по адресу org.jboss.system.ServiceMBeanSupport.jbossInternalStart:er.SerbSerg.start (ServiceMBeanSupport.java:196) в org.jboss.portal.jems.as.system.JBossServiceModelMBean $ 6.invoke (JBossServiceModelMBean.java:374) в org.jboss.mx.server.Injococ. Invocis.jpg94) в org.jboss.mx.interceptor.AbstractInterceptor.invoke (AbstractInterceptor.java:133) в org.jboss.mx.server.Invocation.invoke (Invocation.java:88) в org.jboss.mx.interceptor.ModelMBeanOperationInter.invoke (ModelMBeanOperationInterceptor.java:142) в org.jboss.mx.server.Invocation.invoke (Invocation.java:88) в org.jboss.mx.server.AbstractMBeanInvoker.invoke (AbstractMBeanInvoker.java:264) в org.jboss.mx.server.MBeanServerImpl.invoke (MBeanServerImpl.java:659) в org.jboss.system.ServiceController $ ServiceProxy.invoke.jpg службы сервиса ($)Proxy0.start (неизвестный источник) в org.jboss.system.ServiceController.start (ServiceController.java:417) в org.jboss.system.ServiceController.start (ServiceController.java:435) в org.jboss.system.ServiceController.начать (ServiceController.java:435) с org.jboss.system.ServiceController.start (ServiceController.java:435) с org.jboss.system.ServiceController.start (ServiceController.java:435) с org.jboss.system.ServiceControl.start (ServiceController.java:435) в org.jboss.system.ServiceController.start (ServiceController.java:435) в org.jboss.system.ServiceController.start (ServiceController.java:435) вorg.jboss.system.ServiceController.start (ServiceController.java:435)
at sun.reflect.GeneratedMethodAccessor9.invoke (неизвестный источник) в
sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:25)
в java.lang.reflect.Method.invoke (Method.java:597) в
org.jboss.mx.interceptor.ReflectedDispatcher.invoke (ReflectedDispatcher.java:155)
в org.jboss.mx.server.Invocation.dispatch (Invocation.java:94) в
org.jboss.mx.server.Invocation.invoke (Invocation.java:86) в
org.jboss.mx.server.AbstractMBeanInvoker.invoke (AbstractMBeanInvoker.java:264)
в
org.jboss.mx.server.MBeanServerImpl.invoke (MBeanServerImpl.java:659)
в org.jboss.mx.util.MBeanProxyExt.invoke (MBeanProxyExt.java:210) в
$ Proxy4.start (Неизвестный источник) в
org.jboss.deployment.SARDeployer.start (SARDeployer.java:304) в
sun.reflect.NativeMethodAccessorImpl.invoke0 (собственный метод) в
sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:39)
в
sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:25)
в java.lang.reflect.Method.invoke (Method.java:597) в
org.jboss.mx.interceptor.ReflectedDispatcher.invoke (ReflectedDispatcher.java:155)
в org.jboss.mx.server.Invocation.dispatch (Invocation.java:94) в
org.jboss.mx.interceptor.AbstractInterceptor.invoke (AbstractInterceptor.java:133)
в org.jboss.mx.server.Invocation.invoke (Invocation.java:88) в
org.jboss.mx.interceptor.ModelMBeanOperationInterceptor.invoke (ModelMBeanOperationInterceptor.java:142)
в org.jboss.mx.server.Invocation.invoke (Invocation.java:88) в
org.jboss.mx.server.AbstractMBeanInvoker.invoke (AbstractMBeanInvoker.java:264)
в
org.jboss.mx.server.MBeanServerImpl.invoke (MBeanServerImpl.java:659)
в org.jboss.mx.util.MBeanProxyExt.invoke (MBeanProxyExt.java:210) в
$ Proxy199.start (неизвестный источник) в
org.jboss.deployment.XSLSubDeployer.start (XSLSubDeployer.java:197) в
org.jboss.deployment.MainDeployer.start (MainDeployer.java:1025) в
org.jboss.deployment.MainDeployer.deploy (MainDeployer.java:819) в
org.jboss.deployment.MainDeployer.deploy (MainDeployer.java:782) в
sun.reflect.GeneratedMethodAccessor26.invoke (неизвестный источник) в
sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:25)
в java.lang.reflect.Method.invoke (Method.java:597) в
org.jboss.mx.interceptor.ReflectedDispatcher.invoke (ReflectedDispatcher.java:155)
в org.jboss.mx.server.Invocation.dispatch (Invocation.java:94) в
org.jboss.mx.interceptor.AbstractInterceptor.invoke (AbstractInterceptor.java:133)
в org.jboss.mx.server.Invocation.invoke (Invocation.java:88) в
org.jboss.mx.interceptor.ModelMBeanOperationInterceptor.invoke (ModelMBeanOperationInterceptor.java:142)
в org.jboss.mx.server.Invocation.invoke (Invocation.java:88) в
org.jboss.mx.server.AbstractMBeanInvoker.invoke (AbstractMBeanInvoker.java:264)
в
org.jboss.mx.server.MBeanServerImpl.invoke (MBeanServerImpl.java:659)
в org.jboss.mx.util.MBeanProxyExt.invoke (MBeanProxyExt.java:210) в
$ Proxy9.deploy (неизвестный источник) в
org.jboss.deployment.scanner.URLDeploymentScanner.deploy (URLDeploymentScanner.java:421)
в
org.jboss.deployment.scanner.URLDeploymentScanner.scan (URLDeploymentScanner.java:634)
в
org.jboss.deployment.scanner.AbstractDeploymentScanner $ ScannerThread.doScan (AbstractDeploymentScanner.java:263)
в
org.jboss.deployment.scanner.AbstractDeploymentScanner.startService (AbstractDeploymentScanner.java:336)
в
org.jboss.system.ServiceMBeanSupport.jbossInternalStart (ServiceMBeanSupport.java:289)
в
org.jboss.system.ServiceMBeanSupport.jbossInternalLifecycle (ServiceMBeanSupport.java:245)
at sun.reflect.GeneratedMethodAccessor3.invoke (неизвестный источник) в
sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:25)
в java.lang.reflect.Method.invoke (Method.java:597) в
org.jboss.mx.interceptor.ReflectedDispatcher.invoke (ReflectedDispatcher.java:155)в org.jboss.mx.server.Invocation.dispatch (Invocation.java:94) в
org.jboss.mx.server.Invocation.invoke (Invocation.java:86) в
org.jboss.mx.server.AbstractMBeanInvoker.invoke (AbstractMBeanInvoker.java:264)
в
org.jboss.mx.server.MBeanServerImpl.invoke (MBeanServerImpl.java:659)
в
org.jboss.system.ServiceController $ ServiceProxy.invoke (ServiceController.java:978)
в $ Proxy0.start (неизвестный источник) в
org.jboss.system.ServiceController.start (ServiceController.java:417)
at sun.reflect.GeneratedMethodAccessor9.invoke (неизвестный источник) в
sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:25)
в java.lang.reflect.Method.invoke (Method.java:597) в
org.jboss.mx.interceptor.ReflectedDispatcher.invoke (ReflectedDispatcher.java:155)
в org.jboss.mx.server.Invocation.dispatch (Invocation.java:94) в
org.jboss.mx.server.Invocation.invoke (Invocation.java:86) в
org.jboss.mx.server.AbstractMBeanInvoker.invoke (AbstractMBeanInvoker.java:264)
в
org.jboss.mx.server.MBeanServerImpl.invoke (MBeanServerImpl.java:659)
в org.jboss.mx.util.MBeanProxyExt.invoke (MBeanProxyExt.java:210) в
$ Proxy4.start (Неизвестный источник) в
org.jboss.deployment.SARDeployer.start (SARDeployer.java:304) в
org.jboss.deployment.MainDeployer.start (MainDeployer.java:1025) в
org.jboss.deployment.MainDeployer.deploy (MainDeployer.java:819) в
org.jboss.deployment.MainDeployer.deploy (MainDeployer.java:782) в
org.jboss.deployment.MainDeployer.deploy (MainDeployer.java:766) в
sun.reflect.NativeMethodAccessorImpl.invoke0 (собственный метод) в
sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:39)
в
sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:25)
в java.lang.reflect.Method.invoke (Method.java:597) в
org.jboss.mx.interceptor.ReflectedDispatcher.invoke (ReflectedDispatcher.java:155)
в org.jboss.mx.server.Invocation.dispatch (Invocation.java:94) в
org.jboss.mx.interceptor.AbstractInterceptor.invoke (AbstractInterceptor.java:133)
в org.jboss.mx.server.Invocation.invoke (Invocation.java:88) в
org.jboss.mx.interceptor.ModelMBeanOperationInterceptor.invoke (ModelMBeanOperationInterceptor.java:142)
в org.jboss.mx.server.Invocation.invoke (Invocation.java:88) в
org.jboss.mx.server.AbstractMBeanInvoker.invoke (AbstractMBeanInvoker.java:264)
в
org.jboss.mx.server.MBeanServerImpl.invoke (MBeanServerImpl.java:659)
в org.jboss.mx.util.MBeanProxyExt.invoke (MBeanProxyExt.java:210) в
$ Proxy5.deploy (неизвестный источник) в
org.jboss.system.server.ServerImpl.doStart (ServerImpl.java:482) в
org.jboss.system.server.ServerImpl.start (ServerImpl.java:362) в
org.jboss.Main.boot (Main.java:200) в
org.jboss.Main $ 1.run (Main.java:508) в
java.lang.Thread.run (Thread.java:662) Причина:
javax.portlet.PortletException: служба авторизации не найдена в
org.jboss.portal.core.cms.ui.admin.CMSAdminPortlet.init (CMSAdminPortlet.java:140)
в org.jboss.portlet.JBossPortlet.init (JBossPortlet.java:387) в
org.jboss.portal.core.cms.ui.admin.CMSAdminPortlet.init (CMSAdminPortlet.java:151)
в
org.jboss.portal.portlet.impl.jsr168.PortletContainerImpl.initPortlet (PortletContainerImpl.java:417)
в
org.jboss.portal.portlet.impl.jsr168.PortletContainerImpl.start (PortletContainerImpl.java:256)
... еще 134
и
2011-11-21 08: 55: 54 977 ОШИБКА [org.jboss.deployment.scanner.URLDeploymentScanner] Incomplete
Список развертывания:
--- MBean-компоненты, ожидающие других MBean-компонентов --- ObjectName: portal: service = Module, type = IdentityServiceController Состояние: FAILED
Причина: org.jboss.portal.identity.IdentityException: не удается инициировать
Идентификационные модули: Зависит от: portal: service = Hibernate
portal: service = IdentityEventManager зависит от меня:
портал: Сервис = AuthorizationProvider, тип = К
портал: Сервис = Interceptor, тип = Cms, имя = ACL
портал: Сервис = ApprovePublish, тип = Workflowportal: service = IdentityUIConfigurationService, тип = IdentityUI portal: service = IdentityUserManagementService, type = IdentityUI portal.management:service=Management,type=Identity,name=Default portal: service = Interceptor, type = Server, name = Пользовательский портал: service =Модуль, тип = Почтовый портал: service = CustomizationManager
--- MBEANS, КОТОРЫЕ ЯВЛЯЮТСЯ ПРИЧИНОЙ ЗАДАЧИ --- ObjectName: portal: service = Module, type = IdentityServiceController Состояние: СБОЙ Причина:org.jboss.portal.identity.IdentityException: Невозможно инициировать модули идентификации: I Зависит от: portal: service = Hibernate portal: service = IdentityEventManager Зависит от меня: portal: service = AuthorizationProvider, тип = cms portal: service = Interceptor, type =Cms, имя = портал ACL: служба = ApprovePublish, тип = портал рабочего процесса: служба = IdentityUIConfigurationService, тип = IdentityUI portal: service = IdentityUserManagementService, type = IdentityUI portal.management:service=Management,type=Identity,name=Default portal: service= Interceptor, тип = Сервер, имя = User portal: service = Module, type = Mail portal: service = CustomizationManager
Возможно, кто-то из вас уже сталкивался с такой ошибкой?