Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.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
Web services Liferay web服务_Web Services_Soap_Liferay - Fatal编程技术网

Web services Liferay web服务

Web services Liferay web服务,web-services,soap,liferay,Web Services,Soap,Liferay,我使用与Tomcat服务器和Oracle 10g数据库捆绑在一起的Liferay 6.1.1-ce-ga2。 我的目标是插入一些内容,如期刊文章,并在资产发布器中显示它们(具有结构和模板,已经在工作) 我使用了带有正确字段的(groupid、structureid、templateid等)的JournalArticleServiceSoap.addArticle(…)。这些内容“正确”插入到数据库中,我可以在管理员内容面板的web内容中看到它们。内容的状态也为“已批准”。这是通过设置: serv

我使用与Tomcat服务器和Oracle 10g数据库捆绑在一起的Liferay 6.1.1-ce-ga2。 我的目标是插入一些内容,如期刊文章,并在资产发布器中显示它们(具有结构和模板,已经在工作)

我使用了带有正确字段的
(groupid、structureid、templateid等)的
JournalArticleServiceSoap.addArticle(…)
。这些内容“正确”插入到数据库中,我可以在管理员内容面板的web内容中看到它们。内容的状态也为“已批准”。这是通过设置:

serviceContext.setWorkflowAction(WorkflowConstants.ACTION_PUBLISH)
但是,我无法看到插入的内容与资产发布器中的其他内容一起显示,直到我再次打开它进行编辑并单击“发布”按钮(即使没有更改任何内容)。然后按预期发布内容。问题在于内容的数量。它大约是600,所以我不能为每一个做这个动作

我不明白是怎么回事,怎么弄清楚?换句话说,我必须做什么才能使web服务插入的web内容自动显示在Asset Publisher中

或者,
“Publish”
到底做了什么,以便我可以尝试使用SOAP服务(或插入后的SQL)以编程方式再现

提前感谢您的帮助


我也在Liferay论坛上发布了同样的问题:

您可以尝试记录从Liferay访问的数据库,并查看在手动保存文章后会发生什么变化。在此,请将hibernate的日志记录级别设置为info或debug。

您是这样设置serviceContext的吗

ServiceContext serviceContext = new ServiceContext();
serviceContext.setAddGuestPermissions(true);
serviceContext.setAddGroupPermissions(true);
serviceContext.setScopeGroupId(groupId);
serviceContext.setWorkflowAction(WorkflowConstants.ACTION_PUBLISH);

必须按如下方式设置serviceContext:

   ServiceContext serviceContext = new ServiceContext();
    //serviceContext.setAddGuestPermissions(true);
    //serviceContext.setAddGroupPermissions(true);
    serviceContext.setScopeGroupId(groupId);
    serviceContext.setWorkflowAction(1);
    serviceContext.setIndexingEnabled(true);
serviceContext.setIndexingEnabled(true);这是非常重要的

以下代码不是必须重新输入的代码

serviceContext.setAddGuestPermissions(true);

serviceContext.setAddGroupPermissions(true);

是的,Mariol,我的设置是这样的,但仍然不起作用。作为参考,在
journalArticleServiceSoap.addArticle
方法中,我将structureId替换为null,因为在6.1.1版本的liferay中,设置此值会导致java.rmi.RemoteException。当然,在数据库中,我将structureId替换为正确的值。另外,当我将插入的行与另一行(以DB为单位)进行比较时,我看不到任何差异。我在查看我编写的一些代码,发现我使用了WorkflowConstants.STATUS\u APPROVED而不是WorkflowConstants.ACTION\u Publish。现在插入的内容的状态为“APPROVED”。但它仍然没有直接显示,我必须通过LR“publish”按钮再次发布它。在哪里可以使用hibernate级别记录从Liferay访问数据库?ThxAlright,我通过在portal-ext.properties
hibernate.show_sql=true log4j.logger.org.hibernate=info
中添加以下内容来找到记录数据库的方法。addArticle(…)方法和发布操作似乎使用相同的SQL操作(插入和更新)。我正在努力理解数百行代码,如果我找到了解决方案,我将与大家分享。