1

ユーザー情報を提供する独自のWebサービスに接続するために、カスタムIDモデルを実装したいと思います。そのため、 http://docs.jboss.com/jbportal/v2.7.1/referenceGuide/html/identity.htmlの指示に従いました。

JBossAS4.2.3でJBossPortal2.7.2を使用しています。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-portal-2.7.2 \ server \ default \ 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)doFilter(ReplyHeaderFilter.java:96)doFilter(ReplyHeaderFilter.java:96)

jarファイルをデプロイしなくても、identity-config.xmlファイルを変更するだけで同じ例外が発生します。だから私は私のjarファイルがまったくロードされていないと思います。さらに、私の新しいモジュールはデータベースとは何の関係もないため、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 \ entity\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>

ご覧のとおり、Role、Membership、UserProfileも実装しました。その後、サーバーはそれらのクラスで必要ないくつかの欠落したプロパティについて不平を言いました。そこで、これら4つのクラスのそれぞれに以下を追加しました。

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)at org.jboss.portal.portlet.impl.container.PortletContainerLifeCycle.invokeStart(PortletContainerLifeCycle.java:76)at org.jboss .portal.portlet.impl.container.LifeCycle.managedStart(LifeCycle.java:92)at org.jboss.portal.portlet.impl.container.PortletFilterLifeCycle.startDependents(PortletFilterLifeCycle.java:74)at org.jboss.portal.portlet .impl.container.LifeCycle.managedStart(LifeCycle.java:128)(org.jboss.portal.portlet.impl.container.PortletApplicationLifeCycle)。startDependents(PortletApplicationLifeCycle.java:339)at org.jboss.portal.portlet.impl.container.LifeCycle.managedStart(LifeCycle.java:128)at org.jboss.portal.portlet.deployment.jboss.PortletAppDeployment.start(PortletAppDeployment。 java:226)org.jboss.portal.core.deployment.jboss.PortletAppDeployment.start(PortletAppDeployment.java:94)at org.jboss.portal.server.deployment.jboss.DeploymentContext.start(DeploymentContext.java:99) org.jboss.portal.server.deployment.jboss.PortalDeploymentInfoContext.add(PortalDeploymentInfoContext.java:86)at org.jboss.portal.server.deployment.jboss.ServerDeployer.registerFactory(ServerDeployer.java:134)at org.jboss org.jboss.portal.server.deployment.jbossの.portal.server.deployment.jboss.AbstractDeploymentFactory.registerFactory(AbstractDeploymentFactory.java:113)。AbstractDeploymentFactory.start(AbstractDeploymentFactory.java:152)at org.jboss.portal.portlet.deployment.jboss.PortletAppDeploymentFactory.start(PortletAppDeploymentFactory.java:147)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)atsun.reflect。 NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)at java.lang.reflect.Method.invoke(Method.java:597)at org.jboss.portal.jems .as.system.JBossServiceModelMBean $ ServiceMixin.execute(JBossServiceModelMBean.java:486)at org.jboss.portal.jems.as.system.JBossServiceModelMBean $ ServiceMixin.startService(JBossServiceModelMBean.java:452)at org.jboss.system.ServiceMBeanSupport org.jboss.system.ServiceMBeanSupportの.jbossInternalStart(ServiceMBeanSupport.java:289)。start(ServiceMBeanSupport.java:196)at org.jboss.portal.jems.as.system.JBossServiceModelMBean $ 6.invoke(JBossServiceModelMBean.java:374)at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94 )org.jboss.mx.interceptor.AbstractInterceptor.invoke(AbstractInterceptor.java:133)at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)atorg.jboss.mx.interceptor.ModelMBeanOperationInterceptor。 invoke(ModelMBeanOperationInterceptor.java:142)at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)at org.jboss .mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)at org.jboss.system.ServiceController $ ServiceProxy.invoke(ServiceController.java:995)at $ Proxy0.start(Unknown Source)atorg.jboss.system。 ServiceController。start(ServiceController.java:417)at org.jboss.system.ServiceController.start(ServiceController.java:435)at org.jboss.system.ServiceController.start(ServiceController.java:435)at org.jboss.system.ServiceController .start(ServiceController.java:435)at org.jboss.system.ServiceController.start(ServiceController.java:435)at org.jboss.system.ServiceController.start(ServiceController.java:435)atorg.jboss.system。 ServiceController.start(ServiceController.java:435)at org.jboss.system.ServiceController.start(ServiceController.java:435)at org.jboss.system.ServiceController.start(ServiceController.java:435)at sun.reflect.GeneratedMethodAccessor9 .invoke(Unknown Source)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)at java.lang.reflect.Method.invoke(Method.java:597)org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)at org.jboss.mx.server.Invocation .invoke(Invocation.java:86)at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)atorg。 jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:210)at $ Proxy4.start(Unknown Source)at org.jboss.deployment.SARDeployer.start(SARDeployer.java:304)at sun.reflect.NativeMethodAccessorImpl.invoke0 (ネイティブメソッド)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)at java.lang.reflect.Method.invoke(Method.java:597 )org.jbossで。mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)at org.jboss.mx.interceptor.AbstractInterceptor.invoke(AbstractInterceptor.java: 133)org.jboss.mx.server.Invocation.invoke(Invocation.java:88)at org.jboss.mx.interceptor.ModelMBeanOperationInterceptor.invoke(ModelMBeanOperationInterceptor.java:142)at org.jboss.mx.server.Invocation .invoke(Invocation.java:88)at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)atorg。 jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:210)at $ Proxy199.start(Unknown Source)at org.jboss.deployment.XSLSubDeployer.start(XSLSubDeployer.java:197)at org.jboss.deployment.MainDeployer .start(MainDeployer.java:1025)org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:819)at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:782)at sun.reflect.GeneratedMethodAccessor26.invoke(Unknown Source)at sun .reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)at java.lang.reflect.Method.invoke(Method.java:597)at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)at org.jboss.mx.interceptor.AbstractInterceptor.invoke(AbstractInterceptor.java:133)at org.jboss.mx.server.Invocation.invoke( Invocation.java:88)at org.jboss.mx.interceptor.ModelMBeanOperationInterceptor.invoke(ModelMBeanOperationInterceptor.java:142)at org.jboss.mx.server.Invocation.invoke(Invocation.java:88)at org.jboss.mx 。サーバ。AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:210)at $ Proxy9.deploy(Unknown Source)at org.jboss.deployment.scanner.URLDeploymentScanner.deploy(URLDeploymentScanner.java:421)at org.jboss.deployment.scanner.URLDeploymentScanner.scan(URLDeploymentScanner.java:634)atorg.jboss。 org.jboss.deployment.scanner.AbstractDeploymentScanner.startService(AbstractDeploymentScanner.java:336)のdeployment.scanner.AbstractDeploymentScanner $ ScannerThread.doScan(AbstractDeploymentScanner.java:263)org.jboss.system.ServiceMBeanSupport.jbossInternalStart(Service 289)org.jboss.system.ServiceMBeanSupport.jbossInternalLifecycle(ServiceMBeanSupport.java:245)で太陽の下で。org.jboss.mx.interceptorのjava.lang.reflect.Method.invoke(Method.java:597)のsun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)のreflect.GeneratedMethodAccessor3.invoke(不明なソース)。 ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)at org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)at org.jboss.mx.server.Invocation.invoke(Invocation.java:86)at org .jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)at org.jboss.system.ServiceController $ ServiceProxy.invoke(ServiceController .java:978)at $ Proxy0.start(Unknown Source)at org.jboss.system.ServiceController.start(ServiceController.java:417)at sun.reflect.GeneratedMethodAccessor9.invoke(Unknown Source)atsun.reflect。DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)at java.lang.reflect.Method.invoke(Method.java:597)at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:155)at org.jboss .mx.server.Invocation.dispatch(Invocation.java:94)at org.jboss.mx.server.Invocation.invoke(Invocation.java:86)at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java :264)org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)at org.jboss.mx.util.MBeanProxyExt.invoke(MBeanProxyExt.java:210)at $ Proxy4.start(不明なソース) org.jboss.deployment.SARDeployer.start(SARDeployer.java:304)at org.jboss.deployment.MainDeployer.start(MainDeployer.java:1025)at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:819 )org.jboss.deployment.MainDeployerで。deploy(MainDeployer.java:782)at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:766)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:597)at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java :155)org.jboss.mx.server.Invocation.dispatch(Invocation.java:94)at org.jboss.mx.interceptor.AbstractInterceptor.invoke(AbstractInterceptor.java:133)atorg.jboss.mx.server。 Invocation.invoke(Invocation.java:88)at org.jboss.mx.interceptor.ModelMBeanOperationInterceptor.invoke(ModelMBeanOperationInterceptor.java:142)at org.jboss.mx.server.Invocation.invoke(Invocation。java:88)org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264)at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:659)at org.jboss.mx.util .MBeanProxyExt.invoke(MBeanProxyExt.java:210)at $ Proxy5.deploy(Unknown Source)at org.jboss.system.server.ServerImpl.doStart(ServerImpl.java:482)atorg.jboss.system.server.ServerImpl。 start(ServerImpl.java:362)at org.jboss.Main.boot(Main.java:200)at org.jboss.Main $ 1.run(Main.java:508)at java.lang.Thread.run(Thread。 java:662)原因:javax.portlet.PortletException:承認サービスがorg.jboss.portlet.JBossPortletのorg.jboss.portal.core.cms.ui.admin.CMSAdminPortlet.init(CMSAdminPortlet.java:140)に見つかりません.init(JBossPortlet.java:387)at org.jboss.portal.core.cms.ui.admin.CMSAdminPortlet.init(CMSAdminPortlet.java:151)atorg。jboss.portal.portlet.impl.jsr168.PortletContainerImpl.initPortlet(PortletContainerImpl.java:417)at org.jboss.portal.portlet.impl.jsr168.PortletContainerImpl.start(PortletContainerImpl.java:256)...134詳細

2011-11-21 08:55:54,977エラー[org.jboss.deployment.scanner.URLDeploymentScanner]不完全なデプロイメントリスト:

---他のMBeanを待機しているMBean---ObjectName:portal:service = Module、type = IdentityServiceController状態:FAILED理由:org.jboss.portal.identity.IdentityException:IDモジュールを開始できません:依存:portal:service = Hibernate portal:service = IdentityEventManager Depends On Me:portal:service = AuthorizationProvider、type = cms portal:service = Interceptor、type = Cms、name = ACL portal:service = ApprovePublish、type = Workflow portal:service = IdentityUIConfigurationService、type = IdentityUI portal:service = IdentityUserManagementService、type = IdentityUI portal.management:service = Management、type = Identity、name = Default portal:service = Interceptor、type = Server、name = User portal:service = Module、type = Mail portal:service = CustomizationManager

---問題の根本原因であるMBEANS---ObjectName:portal:service = Module、type = IdentityServiceController状態:FAILED理由:org.jboss.portal.identity.IdentityException:IDモジュールを開始できません:依存: portal:service = Hibernate portal:service = IdentityEventManager Depends On Me:portal:service = AuthorizationProvider、type = cms portal:service = Interceptor、type = Cms、name = ACL portal:service = ApprovePublish、type = Workflow portal:service = IdentityUIConfigurationService 、type = IdentityUI portal:service = IdentityUserManagementService、type = IdentityUI portal.management:service = Management、type = Identity、name = Default portal:service = Interceptor、type = Server、name = User portal:service = Module、type = Mail portal:service = CustomizationManager

おそらく、あなたの誰かがすでにそのようなエラーに遭遇したことがありますか?

4

1 に答える 1

1

standardidentity-config.xmlの要素"class"は、対応するモジュールを参照する必要があります。たとえば、Userの場合は、UserModuleの実装を参照する必要があります(User自体の実装ではありません:MyUserImpl !!!)。Roleの場合も同様です。メンバーシップとUserProfile。

そこで、インターフェイスUserModule、RoleModuleなどを実装しましたが、直接ではなく、代わりにUserModuleService、RoleModuleServiceなどを拡張して作業を節約しました。前回の投稿で言及した不足しているプロパティは、その時点では不要になり、削除できます。

standardidentity-config.xmlは次のようになります。

<module>
    <type>User</type>
    <implementation>CUSTOM</implementation>
    <service-name>portal:service=Module,type=User</service-name>
    <class>com.myCompany.MyUserModuleImpl</class>
    <config>
        <option>
            <name>jNDIName</name>
            <value>java:/portal/UserModule</value>
        </option>
    </config>
</module>
<module>
    <type>Role</type>
    <implementation>CUSTOM</implementation>
    <service-name>portal:service=Module,type=Role</service-name>
    <class>com.myCompany.MyRoleModuleImpl</class>
    <config>
        <option>
            <name>jNDIName</name>
            <value>java:/portal/RoleModule</value>
        </option>
    </config>
</module>
<module>
    <type>Membership</type>
    <implementation>CUSTOM</implementation>
    <service-name>portal:service=Module,type=Membership</service-name>
    <class>com.myCompany.MyMembershipModuleImpl</class>
    <config>
        <option>
            <name>jNDIName</name>
            <value>java:/portal/MembershipModule</value>
        </option>
    </config>
</module>
<module>
    <type>UserProfile</type>
    <implementation>CUSTOM</implementation>
    <service-name>portal:service=Module,type=UserProfile</service-name>
    <class>com.myCompany.MyUserProfileModuleImpl</class>
    <config>
        <option>
            <name>jNDIName</name>
            <value>java:/portal/UserProfileModule</value>
        </option>
    </config>
</module>

これらのインターフェースを実装するには、pom.xmlに次の依存関係を追加する必要がありました。

<dependency>
    <groupId>org.jboss.portal.common</groupId>
    <artifactId>common-common</artifactId>
    <version>1.2.0</version>
    <scope>provided</scope>
</dependency>
<dependency>
    <groupId>jboss</groupId>
    <artifactId>jboss-common-client</artifactId>
    <version>3.2.3</version>
    <scope>provided</scope>
</dependency>
于 2011-11-22T11:00:27.933 に答える