Невозможно создать страницу пользователя с помощью публичного API Gatein
Когда я создаю страницу пользователя, используя публичный API Gatein, я получил org.gatein.api.EntityNotFoundException
исключение. Вот мой код для создания страницы пользователя
User user = PortalRequest.getInstance().getUser();
Portal portal = PortalRequest.getInstance().getPortal();
f(portal.getPage(new PageId(user, pageName))==null){
Page newpage = portal.createPage(new PageId(user, pageName));// Here i got the exception
}
Здесь следует трассировка стека исключения
org.gatein.api.EntityNotFoundException: Site Site.Id[type=dashboard, name=supervisor] doesn't exist
at org.gatein.api.PortalImpl.createPage(PortalImpl.java:271) [exo.portal.component.api-3.6.0.Final.jar:3.6.0.Final]
at com.radiant.cisms.view.bean.DynamicDashBoardBean.createUserSpecificPage(DynamicDashBoardBean.java:146)
at com.radiant.cisms.view.bean.DynamicDashBoardBean.saveNewPortlets(DynamicDashBoardBean.java:115)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.7.0_45]
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) [rt.jar:1.7.0_45]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) [rt.jar:1.7.0_45]
at java.lang.reflect.Method.invoke(Unknown Source) [rt.jar:1.7.0_45]
at org.apache.myfaces.el.MethodBindingImpl.invoke(MethodBindingImpl.java:132)
... 121 more
Также здесь я прилагаю свой portal-configuration.xml для справки
<?xml version="1.0" encoding="UTF-8"?>
<configuration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.exoplaform.org/xml/ns/kernel_1_0.xsd http://www.exoplaform.org/xml/ns/kernel_1_0.xsd"
xmlns="http://www.exoplaform.org/xml/ns/kernel_1_0.xsd">
<external-component-plugins>
<!-- The full qualified name of the UserPortalConfigService -->
<target-component>org.exoplatform.portal.config.UserPortalConfigService
</target-component>
<component-plugin>
<name>new.portal.config.user.listener</name>
<set-method>initListener</set-method>
<type>org.exoplatform.portal.config.NewPortalConfigListener</type>
<description>this listener init the portal configuration
</description>
<init-params>
<value-param>
<name>default.portal</name>
<description>The default portal for checking db is empty or not
</description>
<value>MPortal</value>
</value-param>
<value-param> <
<name>override</name>
<description>The flag parameter to decide if portal metadata is overriden on restarting server</description>
<value>true</value>
</value-param>
<object-param>
<name>portal.configuration</name>
<description>description</description>
<object type="org.exoplatform.portal.config.NewPortalConfig">
<field name="predefinedOwner">
<collection type="java.util.HashSet">
<value>
<string>classic</string>
</value>
<value>
<string>MPortal1</string>
</value>
<value>
<string>MPortalForgotPassword</string>
</value>
<value>
<string>MPortalWizard</string>
</value>
<value>
<string>MPortalEndUser</string>
</value>
</collection>
</field>
<field name="ownerType">
<string>portal</string>
</field>
<field name="templateLocation">
<string>war:/conf/gtec/</string>
</field>
<field name="importMode">
<string>overwrite</string>
</field>
</object>
</object-param>
</init-params>
</component-plugin>
</external-component-plugins>
</configuration>
Можете ли вы помочь мне объяснить причину этой проблемы?
1 ответ
Ошибка говорит о том, что панель вашего пользователя не существует. Панель инструментов создается автоматически при создании пользователя благодаря слушателю org.exoplatform.portal.config.UserPortalConfigListener, объявленному в файле portal.war/WEB-INF/conf/portal/portal-configuration.xml. Так что я думаю, в вашем случае, слушатель не был запущен, когда пользователь был создан.
Если вы создаете своих пользователей программно, вы должны быть уверены, что опция широковещания включена (что вызовет слушателей), установив для второго аргумента метода createUser значение true: orgService.getUserHandler(). CreateUser(user, true);