Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Liferay';构建服务&x27;而且部署速度太慢_Java_Performance_Tomcat_Liferay_Liferay 6 - Fatal编程技术网

Java Liferay';构建服务&x27;而且部署速度太慢

Java Liferay';构建服务&x27;而且部署速度太慢,java,performance,tomcat,liferay,liferay-6,Java,Performance,Tomcat,Liferay,Liferay 6,我正在使用Liferay平台开发公司门户(版本6.1.1)。这个门户已经有相当大的实现和数据库大小(174个表) 正如预期的那样,随着项目的增长,从一开始构建服务和部署就变得越来越慢 问题是,在当前的实现中,执行“构建服务”大约需要20分钟,执行部署大约需要3/4分钟,即使我在代码中更改了一个简单的字符串,也会发生这种情况。每部署3次,就需要重新启动服务器,因为服务器似乎冻结了 我的机器规格是: 英特尔酷睿i5-3210M 8GB内存 64位 以下是我的liferay服务器的内存参数: -

我正在使用Liferay平台开发公司门户(版本6.1.1)。这个门户已经有相当大的实现和数据库大小(174个表)

正如预期的那样,随着项目的增长,从一开始构建服务和部署就变得越来越慢

问题是,在当前的实现中,执行“构建服务”大约需要20分钟,执行部署大约需要3/4分钟,即使我在代码中更改了一个简单的字符串,也会发生这种情况。每部署3次,就需要重新启动服务器,因为服务器似乎冻结了

我的机器规格是:

  • 英特尔酷睿i5-3210M
  • 8GB内存
  • 64位
以下是我的liferay服务器的内存参数:

  • -Xms1024m-Xmx1024m-XX:PermSize=1024m-XX:MaxPermSize=1024m
正如您所知,这种等待时间会使实现的性能大幅下降

我的问题是:这正常吗?如果是,在未来的门户实现中我有什么样的替代方案


谢谢。

174张桌子相当多——比Liferay本身带来的还要多。我建议将您的应用程序分散到单独部署的插件中——它们(技术上)不需要位于同一个插件中,ServiceBuilder允许您跨不同的插件使用服务

适当的依赖关系管理应该帮助您隔离将提取到单独应用程序中的功能。声明哪个应用程序需要之前部署的其他应用程序,您就可以跨上下文访问服务

要回答您的评论问题,请仅使用两个项目进行采样:使用ServiceBuilder创建它们。让我们称它们为
commonportlet
app1portlet
。显然,app1 portlet使用来自
公共portlet
的组件(和服务)

在app1 portlet中,编辑
docroot/WEB-INF/liferay plugin package.properties
并添加行

 required-deployment-contexts=common-portlet
这将确保只有当
common portlet
可用时才部署
app1 portlet
。另外,
common service.jar
,即使用service biulder生成的
common portlet
的API,将自动放在
app1 portlet
的类路径上,换句话说,您可以调用在
common portlet
中实现的服务


假设您的更抽象的portlet有一个更稳定的接口(通常这表示一个合适的体系结构),对
app1portlet
(或
app2portlet
等)的更改只会影响您在其中进行更改的portlet。即使您在
公共portlet
中进行了更改,service builder也会相对较快,但是,在接口更改时,您仍然需要重新编译所有内容,但这是依赖项的性质。如果不更改接口,只需重新部署即可。

174个表相当多,比Liferay本身带来的多得多。我建议将您的应用程序分散到单独部署的插件中——它们(技术上)不需要位于同一个插件中,ServiceBuilder允许您跨不同的插件使用服务

适当的依赖关系管理应该帮助您隔离将提取到单独应用程序中的功能。声明哪个应用程序需要之前部署的其他应用程序,您就可以跨上下文访问服务

要回答您的评论问题,请仅使用两个项目进行采样:使用ServiceBuilder创建它们。让我们称它们为
commonportlet
app1portlet
。显然,app1 portlet使用来自
公共portlet
的组件(和服务)

在app1 portlet中,编辑
docroot/WEB-INF/liferay plugin package.properties
并添加行

 required-deployment-contexts=common-portlet
这将确保只有当
common portlet
可用时才部署
app1 portlet
。另外,
common service.jar
,即使用service biulder生成的
common portlet
的API,将自动放在
app1 portlet
的类路径上,换句话说,您可以调用在
common portlet
中实现的服务


假设您的更抽象的portlet有一个更稳定的接口(通常这表示一个合适的体系结构),对
app1portlet
(或
app2portlet
等)的更改只会影响您在其中进行更改的portlet。即使您在
公共portlet
中进行了更改,service builder也会相对较快,但是,在接口更改时,您仍然需要重新编译所有内容,但这是依赖项的性质。如果不更改接口,只需重新部署即可。

174个表相当多,比Liferay本身带来的多得多。我建议将您的应用程序分散到单独部署的插件中——它们(技术上)不需要位于同一个插件中,ServiceBuilder允许您跨不同的插件使用服务

适当的依赖关系管理应该帮助您隔离将提取到单独应用程序中的功能。声明哪个应用程序需要之前部署的其他应用程序,您就可以跨上下文访问服务

要回答您的评论问题,请仅使用两个项目进行采样:使用ServiceBuilder创建它们。让我们称它们为
commonportlet
app1portlet
。显然,app1 portlet使用来自
公共portlet
的组件(和服务)

在app1 portlet中,编辑
docroot/WEB-INF/liferay plugin package.properties
并添加行

 required-deployment-contexts=common-portlet
这将确保只有当
common portlet
可用时才部署
app1 portlet
。另外,
common service.jar
,即使用服务biulder生成的
common portlet
的API,将自动放在classp上