Liferay和WSRP portlet:WSRP使用者上的错误URL

时间:2014-05-08 15:43:14

标签: liferay portlet wsrp

目前我正在检查Liferay及其portlet功能,特别是通过WSRP远程portlet。

我有两个liferay实例在同一网络中的不同机器上运行。现在我想将一个portlet从一个liferay实例共享到另一个,所以我在两个安装上安装了WSRP应用程序,并将其中一个节点配置为WSRP Producer,另一个配置为WSRP Consumer。 我的WSRP Producer发布了用于货币计算的portlet(德语中的Währungsrechner),它包含在Liferay中。 乍一看,这个WSRP portlet似乎可以在WSRP使用者端工作 - 我可以将它添加到WSRP使用者的页面,并且其内容(某些输入框)可以正确显示。

但有一个问题:

portlet呈现的HTML表单始终提交给WSRP生产者的域,而不是像我期望的那样提交给WSRP使用者的域。标签的action属性包含错误的域名。

我还使用Liferay UI编写了一个用于调试目的的小portlet,它简单地打印JSP-Tag的输出,将其安装在WSRP生成器上并将其嵌入到WSRP使用者的页面中。这个简单的调试portlet打印的URL始终是绝对URL,并指向WSRP生成器,即使在WSRP使用者上显示portlet也是如此。我希望这些网址是相对的,或者指向正确的域名,例如通过WSRP使用者生命周期实例上的页面显示portlet时,到WSRP使用者域。

我评估Liferay的原因是,我们要检查它是否适合开发portlet并通过WSRP提供这些portlet以供远程使用。 为了进一步研究这个问题,我使用Liferay SDK和Eclipe Plugin构建了一个小型调试portlet。 portlet主要由一个简单的JSP页面组成,该页面打印出以下结果:


    <%@ taglib uri="http://liferay.com/tld/portlet" prefix="liferay-portlet" %>
    <span class="important"%>portlet:actionURL: </span><portlet:actionURL/%>

当我在lifery.mycompany.net上安装此portlet并通过WSRP生成器将其发布到liferay-2.mycompany.net时,输出URL为:


    http://liferay.mycompany.net:8080/de_DE/widget/web/wsrp-achimstestproducer/portlets?p_auth=0iLgJP7e&p_p_id=sbdebug_WAR_sbliferaydemopluginportlet_INSTANCE_qs2S&p_p_lifecycle=1&p_p_state=normal&p_p_mode=view

请注意,该域名是liferay.mycompany.net而不是预期的liferay-2.mycompany.net。

我该如何解决这个问题? 我是否需要调整Liferay的配置,以便WSRP使用者用自己的URL替换WSRP portlet中的URL? 还有其他因素会影响WSRP portlet和actionURL吗? 任何有关这个问题的帮助都会非常令人沮丧!

我的设置是: - Liferay 6.2 CE与Tomcat 7 - 数据库是MySQL 5.5 - Oracle Java 7 - Liferay配置了内置安装向导

提前致谢!

2014-05-23:这里有更多信息

我还在liferay's forums:

中发布了一些其他信息

- &GT;在liferay-portlet.xml中将requires-namespaced-parameters设置为false似乎可以解决域问题,但是当通过WSRP使用portlet时,仍然不会执行portlet的processAction方法:(

我在这里做错了吗?欢迎任何想法和提示!

1 个答案:

答案 0 :(得分:1)

在使用了liferay的论坛后,网上的其他几个WSRP资源和搜索引擎现在很有用。

以下三件事似乎是我遇到WSRP问题的主要原因:

  • requires-namespaced-parameters必须明确设置为false
  • 必须停用CSRF令牌,我已经通过init-param在portlet-xml中做到了这一点:

    <init-param>
      <name>check-auth-token</name>
      <value>false</value>
    </init-param>
    
  • 当在事件处理方法中创建render参数时,渲染参数似乎在视图JSP中不可用,因此我切换到portlet会话属性以将数据从portlet类传输到JSP图

相关问题