- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
有时,当我停止 Liferay 模块时(例如,当我将其 JAR 的新版本放入 deploy/
时),该模块拒绝停止。
虽然模块应该进入“已解决”状态,但它永远保持在“停止”状态:
通常是由于线程未在某处终止,或者网络连接未正确关闭,调查起来通常很痛苦。
我的问题:如何更有效地找出这个Liferay模块的问题是什么?
我尝试过的:
diag <module id>
似乎没有提供任何关于模块为何拒绝离开“停止”状态的有值(value)的信息。最佳答案
首先,找到您的 web 应用服务器的 PID:
ps aux | grep tomcat
如果您正在运行 Tomcat 以外的其他服务器,或者您有多个实例正在运行,请调整该命令。
然后,将该服务器的所有线程转储到文件中:
jstack 12345 > jstack.txt
其中 12345 是您在第一步中找到的 PID。
然后,查看 bundle 的源代码,并找到服务激活器。它通常看起来像这样:
package fr.free.nrw;
[import section]
public class ServiceActivator implements BundleActivator {
private ServiceRegistration registration;
@Override
public void start(BundleContext context) throws Exception {
registration = context.registerService(
MyService.class.getName(), new MyServiceImpl(), null);
}
@Override
public void stop(BundleContext context) throws Exception {
registration.unregister();
}
}
注意:
例如,在上面的示例中,它们是 fr.free.nrw
、ServiceActivator
和 stop
,从这三个中获取全名fr.free.nrw.ServiceActivator.stop
。
现在打开jstack.txt
并搜索全名。尽管文件有数千行长,但很可能只有一个命中,这就是有问题的线程:
at org.eclipse.osgi.internal.serviceregistry.ServiceRegistrationImpl.unregister(ServiceRegistrationImpl.java:222)
at fr.free.nrw.ServiceActivator.stop(ServiceActivator.java:30)
at org.eclipse.osgi.internal.framework.BundleContextImpl$4.run(BundleContextImpl.java:830)
at org.eclipse.osgi.internal.framework.BundleContextImpl$4.run(BundleContextImpl.java:1)
at java.security.AccessController.doPrivileged(Native Method)
at org.eclipse.osgi.internal.framework.BundleContextImpl.stop(BundleContextImpl.java:823)
在此文件中,转到段落的开头,如下所示:
"fileinstall-/home/nico/p/liferay/osgi/modules" #37 daemon prio=5 os_prio=0 tid=0x00007f39480e3000 nid=0x384f waiting on condition [0x00007f395d169000]
java.lang.Thread.State: WAITING (parking)
at sun.misc.Unsafe.park(Native Method)
- parking to wait for <0x00000000eb8defb8> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
有了这些信息,您就会知道发生了什么类型的线程问题,并且您将能够使用常用的 Java 线程调试技术来解决它( 1 2 )。
关于Liferay 模块(OSGi 包)保留在 "Stopping",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45431762/
假设我正在向 Liferay Portal 内的不同 portlet 添加数据。所有这些数据都保存在哪里? 最佳答案 Liferay 附带的大多数开箱即用的 portlet,如博客、论坛、Wiki、W
我需要的是: Administrator-level-1(可以编辑所有2级和3级的简单用户和管理员) Administrator-level-2(可以编辑所有普通用户和3级管理员) 管理员级别 3(甚
我在 liferay 工作。我们在我们的项目中使用一个模块来创建 liferay 主题。我使用命令 ant -Ddeploy.war=true 将它部署在服务器中。 war 文件在 liferay 部
我需要一个简单的 Liferay Web 表单扩展,以增强 Liferay 7 Web 表单中填充的数据的文件附件。 还需要将此文件作为附件随电子邮件发送给注册用户。 我知道如何在 liferay 6
When Local Live staging is enabled for a site, a clone of the site is created containing copies of a
我在 liferay 工作。我们在我们的项目中使用一个模块来创建 liferay 主题。我使用命令 ant -Ddeploy.war=true 将它部署在服务器中。 war 文件在 liferay 部
插件的代码如何访问在其自己的 liferay-plugin-package.properties 文件中设置的属性? 最佳答案 您可以使用 DeployManagerUtil 首先导入以下内容: im
Liferay 7 GA1 刚刚发布,但文档尚未完成。如何将默认的 liferay Logo 更改为公司 Logo ?当然,我希望每个网站都有一个自定义 Logo 。 最佳答案 进入控制面板->配置-
我一直在阅读有关从 liferay 6 迁移到 liferay 7 的 liferay 文档 ( https://dev.liferay.com/develop/tutorials/-/knowled
我想问一个关于是否应该迁移到 Liferay 6.2 的问题。 我和我的团队从 4 个月开始就在使用 Liferay 6.1(CE 版)开发的一个相当大的门户网站上工作,现在,由于项目发布日期仍然提前
我是 liferay 的新手,我几乎确信这非常简单:使用速度标记,我希望能够生成指向 Liferay 网站内页面的链接,并将它们嵌入到不同页面上的 portlet 中。 我对如何完成它有一个模糊的想法
我想知道为用户分配的站点角色名称列表。所以我尝试如下, List userRolesList = RoleLocalServiceUtil.getUserRoles(userid);
同样,我们是否有任何可能的解决方案来避免使用扩展方法/自定义实现/ Hook /插件/扩展将用户信息填充到 liferay 数据库中以进行身份验证? 问候维沙尔 G 最佳答案 无法避免在 Life
只是想知道任何一个与 liferay 集成的 wicket 。 在启用 ajax 的情况下对 wicket portlet 进行编码有多难? 有人在生产中使用 wicket portlet 吗? 最佳
我们在liferay 中有一个叫做嵌套portlet 的东西。我想通过代码动态添加这个 portlet。有谁知道用于添加嵌套 portlet 并在其中添加其他 portlet 的代码? 谢谢 !!!
如何以编程方式获取 Liferay 默认语言或区域设置? 最佳答案 检查 com.liferay.portal.kernel.util.LocaleUtil 类方法: LocaleUtil.getDe
是否可以在 service.xml 文件中不配置任何数据库表的情况下创建 liferay 服务构建器。 实际上这里的目的是使用 liferay 服务构建器创建一个服务层。并且在这个服务层没有直接与数据
众所周知,Liferay 具有创建用户的内置功能。但我希望有一个创建用户的工作流程,其中涉及批准过程。我的意思是,用户将由管理员创建,但它应该由另一个授权人批准,然后只有用户帐户将处于事件状态。 有什
我正在使用liferay6.1 和Java SDK 开发liferay portlet。 当用户登录并单击控制面板时,他们可以看到各种选项。有没有办法隐藏这个选项? 我还是新手,但我认为您可以将它从
我发现了如何使用journalContentUtil.getContent方法将Web Content嵌入Liferay 6.2主题中。我的问题是在Liferay 7中如何做同样的事情? 最佳答案 我
我是一名优秀的程序员,十分优秀!