如何将 Bonite Engine api 与 Liferay portlet 一起使用?
Posted
技术标签:
【中文标题】如何将 Bonite Engine api 与 Liferay portlet 一起使用?【英文标题】:How to use Bonite Engine api with Liferay portlet? 【发布时间】:2016-10-31 16:10:57 【问题描述】:我安装了 BonitaBPMCommunity-7.2.3 和 liferay-portal-6.2-ce-ga6。
博尼塔-http://localhost:28604/bonita
Liferay - http://localhost:8080
.
我想在 Liferay portlet 中使用 Bonita Engine Api。我已经在目录"C:\_portal\liferay-portal-6.2-ce-ga6\bonita"
中配置了 bonita 主目录。
我的java代码:
System.setProperty(BONITA_HOME_KEY, BONITAHOME);
System.out.println("Start");
final LoginAPI loginAPI = TenantAPIAccessor.getLoginAPI();
System.out.println("login with install//install");
final APISession session = loginAPI.login("walter.bates", "bpm");
final IdentityAPI identityAPI = TenantAPIAccessor.getIdentityAPI(session);
final SearchResult<User> searchUsers = identityAPI.searchUsers(new SearchOptionsBuilder(0, 20).done());
System.out.println("20 first users:");
for (final User user : searchUsers.getResult())
System.out.println(" * " + user.getUserName() + " -- " + user.getId());
loginAPI.logout(session);
System.out.println("logged out");
System.out.println("Hello");
我有一个错误:
05:46:45,227 错误 [ExceptionHandlerAjaxImpl:69] /views/view.xhtml @14,64 actionListener="#buttonView.buttonAction": java.lang.NoSuchMethodError: org.apache.http.entity.StringEntity .(Ljava/lang/String;Lorg/apache/http/entity/ContentType;)V javax.faces.event.AbortProcessingException: /views/view.xhtml @14,64 actionListener="#buttonView.buttonAction": java.lang.NoSuchMethodError: org.apache.http.entity.StringEntity.(Ljava/lang/字符串;Lorg/apache/http/entity/ContentType;)V 在 javax.faces.event.MethodExpressionActionListener.processAction(MethodExpressionActionListener.java:182) 在 javax.faces.event.ActionEvent.processListener(ActionEvent.java:88) 在 javax.faces.component.UIComponentBase.broadcast(UIComponentBase.java:775) 在 javax.faces.component.UICommand.broadcast(UICommand.java:300) 在 javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:786) 在 javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1251) 在 com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81) 在 com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) 在 com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118) 在 com.liferay.faces.bridge.BridgePhaseResourceImpl.execute(BridgePhaseResourceImpl.java:103) 在 com.liferay.faces.bridge.BridgeImpl.doFacesRequest(BridgeImpl.java:128) 在 javax.portlet.faces.GenericFacesPortlet.serveResource(GenericFacesPortlet.java:178) 在 com.liferay.portlet.FilterChainImpl.doFilter(FilterChainImpl.java:122) 在 com.liferay.portlet.ScriptDataPortletFilter.doFilter(ScriptDataPortletFilter.java:82) 在 com.liferay.portlet.FilterChainImpl.doFilter(FilterChainImpl.java:116) 在 com.liferay.portal.kernel.portlet.PortletFilterUtil.doFilter(PortletFilterUtil.java:71) 在 com.liferay.portal.kernel.servlet.PortletServlet.service(PortletServlet.java:112) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:731) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 在 org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 在 com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:116) 在 com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilter.doFilter(InvokerFilter.java:119) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 在 org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:748) 在 org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:486) 在 org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:411) 在 org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:338) 在 com.liferay.portlet.InvokerPortletImpl.invoke(InvokerPortletImpl.java:580) 在 com.liferay.portlet.InvokerPortletImpl.invokeResource(InvokerPortletImpl.java:675) 在 com.liferay.portlet.InvokerPortletImpl.serveResource(InvokerPortletImpl.java:441) 在 com.liferay.portlet.PortletContainerImpl._doServeResource(PortletContainerImpl.java:775) 在 com.liferay.portlet.PortletContainerImpl.serveResource(PortletContainerImpl.java:149) 在 com.liferay.portlet.SecurityPortletContainerWrapper.serveResource(SecurityPortletContainerWrapper.java:166) 在 com.liferay.portlet.RestrictPortletContainerWrapper.serveResource(RestrictPortletContainerWrapper.java:166) 在 com.liferay.portal.kernel.portlet.PortletContainerUtil.serveResource(PortletContainerUtil.java:164) 在 com.liferay.portal.action.LayoutAction.processLayout(LayoutAction.java:394) 在 com.liferay.portal.action.LayoutAction.doExecute(LayoutAction.java:200) 在 com.liferay.portal.action.LayoutAction.execute(LayoutAction.java:95) 在 org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431) 在 org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236) 在 com.liferay.portal.struts.PortalRequestProcessor.process(PortalRequestProcessor.java:168) 在 org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196) 在 org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:650) 在 com.liferay.portal.servlet.MainServlet.callParentService(MainServlet.java:557) 在 com.liferay.portal.servlet.MainServlet.service(MainServlet.java:534) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:731) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 在 org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 在 com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:116) 在 com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:169) 在 com.liferay.portal.servlet.filters.uploadservletrequest.UploadServletRequestFilter.processFilter(UploadServletRequestFilter.java:93) 在 com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:59) 在 com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDoFilter(InvokerFilterChain.java:204) 在 com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:109)`
【问题讨论】:
【参考方案1】:-
我从 bonita 服务器的 URL 和您用于登录的用户中收集到,您正在尝试连接到工作室中的嵌入式服务器以进行测试。请注意,您可以为测试 bonita 和 liferay 进行的唯一可靠测试是独立的 bonita 服务器(您始终可以在 liferay 服务器中包含 bonita 安装,但由于两者都可能占用大量内存,我不建议这样做) .
您需要设置 bonita Home 的唯一时间是在您最喜欢的 IDE 服务器配置中或直接在您的服务器配置中的 setenv 变量中。
除了登录部分之外,您的代码没有问题。缺少tenantApiAcessor参数的配置(示例代码如下)
地图设置 = new HashMap(); settings.put("server.url", "http://localhost:8080"); settings.put("application.name", "bonita"); APITypeManager.setAPITypeAndParams(ApiAccessType.HTTP, 设置); // 使用 TenantAPIAccessor 获取 LoginAPI LoginAPI loginAPI = TenantAPIAccessor.getLoginAPI(); // 这里的异常处理
【讨论】:
以上是关于如何将 Bonite Engine api 与 Liferay portlet 一起使用?的主要内容,如果未能解决你的问题,请参考以下文章
Google Compute Engine:无法从 gcloud 终端查询 API
将 App Engine servlet-api-2.5 升级到 servlet-api-3.1?
带有iOS客户端的Google App Engine Channel API?
如何将 AJAX 与 Google App Engine (Python) 结合使用