**我只是因为没有一个与stackoverflow精神相符的问题而拍了拍我的手腕.根据SO mod的建议,我在程序员堆栈交换中再次发布了这个问题.这里是:**
同样的问题在Programmers.StackExchange上重新发布
我正试图从尽可能多的来源获取洞察力,我想听听Stackoverflow的大脑.
门户空间的幻灭
我看到令人不安的大型企业客户已经对他们的企业门户体验感到失望,特别是在WebSphere Portal Server(WPS)领域.已投入数百万美元,但通过聚合和集成协作工具实现个性化内容的承诺从未实现.转向WPS 7.x是一个很大的裂缝和替换行动,客户想知道他们是否应该完全移动到其他地方.
门户软件:一个比所有替代品更好的可怕选择
有很多门户网站的仇恨者,有时门户网站的解决方案确实有点过分,但当你谈到大型的跨国公司时,如何建议他们在没有门户服务器的情况下构建全球解决方案?门户网站并不总是像Tomcat或JBoss AS一样有趣,但是当涉及到集成多个应用程序,管理内容,更新作为单独的war文件部署的单个应用程序,管理安全性到portlet级别,证明某些对用户的个性化程度,以及帮助管理大型企业作为其内部和外部网站的一部分的数千页的压倒性任务,是否有更好的技术?
获取社区洞察力和反馈
我一直在努力争取尽可能多的洞察力.我在TSS上写了一篇关于这个问题的文章:
我也在CodeRanch复活了一个帖子,看看我是否能从那些漂亮的工作人员那里得到任何见解.
我也在寻找twitterati(@potemcam)的一些见解.
这不是一个交叉发布,而是试图真正从社区中收集一些敏锐的洞察力.如果我能得到一些可靠的回答和经验,我想将它们汇总成TSS的建议文章.因此,任何见解或经验都会有所帮助.
欢迎见解和经验
期待听到您的见解.顺便说一句,我将从其他景点交叉链接到这个帖子,所以有相同问题的人将能够来回反弹,看看社区在这个主题上说了些什么.
通过调试Liferay Portal,即tomcat应用程序,ThreadPoolExecutor$Worker.run() line: 912虽然我没有在这个类中设置断点,但eclipse通常会停止.这ThreadPoolExecutor不是我的应用程序类,我认为属于tomcat.我的问题是:这里出了什么问题,为什么日食会在这里停止?并且可以在eclipse中设置这样的"外部断点"来忽略吗?

我需要使用Mockito或PowerMock进行JUnit测试,或者使用其他方法进行JUnit测试,但我不知道该从哪开始.我创建了测试文件夹,设置了mockito,但接下来我该怎么办?我找不到任何例子,所以我坚持了下来.你能告诉我如何编写这个JUnit测试或至少给出一些想法.
public void deleteAuthor(ActionRequest actionRequest, ActionResponse actionResponse)
throws SystemException, PortalException {
long authorId = ParamUtil.getLong(actionRequest, "authorId");
AuthorLocalServiceUtil.deleteAuthor(authorId);
SessionMessages.add(actionRequest, "deleted-author");
log.info(DELETE_SUCCESS);
}
Run Code Online (Sandbox Code Playgroud)
或这个:
public void addAuthor(ActionRequest actionRequest, ActionResponse actionResponse)
throws IOException, PortletException, SystemException {
String authorName=ParamUtil.getString(actionRequest,"authorName");
Author author=AuthorLocalServiceUtil.createAuthor(CounterLocalServiceUtil.increment());
author.setAuthorName(authorName);
author=AuthorLocalServiceUtil.addAuthor(author);
}
Run Code Online (Sandbox Code Playgroud)
PS我非常新手,在我的生活中只进行了1次JUnit测试,所以我真的对好建议感兴趣.提前致谢!
UPD:
我试着像这样做:
private BookAndAuthor portlet;
@Before
public void setUp() {
portlet = new BookAndAuthor();
}
@Test
public void testDeleteBookOk() throws Exception {
PowerMockito.mockStatic(BookLocalServiceUtil.class);
long id = 1;
Book book = BookLocalServiceUtil.createBook(id);
ActionRequest actionRequest = mock(ActionRequest.class);
ActionResponse actionResponse = mock(ActionResponse.class); …Run Code Online (Sandbox Code Playgroud) 我试图使用Selenium 2在Liferay门户服务器上自动化一些测试用例.许多Liferay操作会弹出新的浏览器窗口(如用户模拟).这是一个示例链接(注意target="_blank"):
<a title="(Opens New Window)" target="_blank" id="_125_xafr"
href="/web/guest?doAsUserId=xBRUWI85MvM%3D" class="taglib-icon aui-focus"
tabindex="0" role="menuitem">
<img alt="" src="/html/themes/control_panel/images/common/impersonate_user.png" class="icon">
Impersonate User
<span class="opens-new-window-accessible">(Opens New Window)</span>
</a>
Run Code Online (Sandbox Code Playgroud)
切换到弹出窗口上下文非常简单:
String currentWindowHandle = driver.getWindowHandle();
if ( log.isDebugEnabled() ) log.debug( "currentWindowHandle='" + currentWindowHandle + "'" );
for ( String windowHandle : driver.getWindowHandles() ) {
if ( ! windowHandle.equals( currentWindowHandle ) ) {
boolean impersonationSuccess = false;
if ( log.isDebugEnabled() ) log.debug( "checking '" + windowHandle + "' impersonation alert notice" );
driver.switchTo().window( windowHandle ); …Run Code Online (Sandbox Code Playgroud) 我们正在尝试将liferay服务构建器用作所有portlet的公共层.我们创建了一个单独的公共portlet项目,我们使用service.xml构建服务.这为我们生成了一个service.jar文件.我们正在将这个jar复制到所有portlet WEB-INF/lib目录.
当我们运行portlet时,它会在日志上抛出以下错误,并且Portlet暂时不可用消息显示在portlet上.
14:43:17,447 ERROR [jsp:154] com.liferay.portal.kernel.bean.BeanLocatorException: BeanLocator has not been set
at com.liferay.portal.kernel.bean.PortletBeanLocatorUtil.locate(PortletBeanLocatorUtil.java:40)
at com.cogs.common.service.CourseLocalServiceUtil.getService(CourseLocalServiceUtil.java:223)
at com.cogs.common.service.CourseLocalServiceUtil.getCoursesCount(CourseLocalServiceUtil.java:187)
at org.apache.jsp.jsps.course.course_005fview_jsp._jspService(course_005fview_jsp.java:542)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:646)
at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:551)
at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:488)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:646)
Run Code Online (Sandbox Code Playgroud)
我确信这种方法应该无缝地工作.但发现有几个人在liferay论坛上抱怨它,但还没有找到任何解决方案.如果您找到一种方法将服务构建器用作公共层并且它对您有用,请告诉我们.
我们正在使用maven来构建所有portlet项目.
Liferay版本是6.0.5我们正在使用Spring Portlet MVC进行portlet开发.
我想从我们的应用程序中自动登录我的用户.我知道liferay有一个自动登录功能,但我不知道如何使用它.我没有在网上找到很多有价值的信息.我需要做些什么来使自动登录工作?
我想在用户点击链接时自动登录,无需输入姓名和密码.名称和密码保存在我们的应用程序数据库中.
我的问题:
我成功获取了我的实体的单个记录,但是当我触发搜索查询或尝试获取多个实体时,我得到:
com.liferay.portal.kernel.bean.BeanLocatorException:尚未为servlet上下文设置BeanLocator MyCustom-portlet
我已经按照以下一些链接来设置Junit与Liferay:
我的环境
Liferay 6.0.5 EE与Tomcat捆绑在一起
带有Liferay IDE 1.4的Eclipse Helios使用Junit4
我在eclipse中使用"ant"命令运行我的测试,但不是通过输入Alt+ Shift+ X, T.
这将是非常有益的,如果我能得到一些想法,如何去使用的交易使用JUnit(或至少一些想法,它是如何工作的Liferay),以及如何解决BeanLocatorException(或者至少是为什么会被抛出)
任何帮助将不胜感激.
什么区别themeDisplay.getUser().getGroupId()和themeDisplay.getScopeGroupId()?
如果我Layouts从中检索(页面),它们是否会有任何不同的URL模式,/web-or-user/<user>/*或者/web-or-user-or-group/<group>/*?
我的意思是说得对,每个用户都有他自己的团队或者什么?
据我所知,到目前为止,看起来用户Foo已经将UserFoo和GroupFoo组合在一起,因此您可以检索Foo或Foo组的个人页面...我是好的方式吗?
function tryToDownload(url)
{
oIFrm = document.getElementById('myIFrm');
oIFrm.src = url;
// alert(url);
// url=escape(url);
setTimeout(deletefile(url), 25000);
}
Run Code Online (Sandbox Code Playgroud)
以下是deletfile函数
function deletefile(url){
$.ajax({
type:'post',
url: "<%= addToDoDeleteDownloadFile %>",
data:{filename:url},
type : "GET",
timeout : 20000,
dataType : "text",
success : function(data) {
alert("success");
}
});
}
Run Code Online (Sandbox Code Playgroud)
上面是我的jQuery和我在25秒后调用一个函数,但有些如何不延迟deletefile(url)函数并执行刚刚执行.所以应该是什么问题?
liferay ×10
java ×4
junit ×2
liferay-6 ×2
ajax ×1
autologin ×1
debugging ×1
eclipse ×1
exception ×1
firefox ×1
javascript ×1
jquery ×1
junit4 ×1
liferay-ide ×1
maven-3 ×1
mockito ×1
popup ×1
portal ×1
settimeout ×1
spring-mvc ×1
tomcat ×1
usergroups ×1
websphere ×1
xdebug ×1