第一次用plugins开发无疑等自于自杀,两个星期过去了,经历了无边的黑暗终于看到了光明。接着上一篇create.bat一个portlet,生成的一个portlet是一个最简单的portlet,如果只是普通的显示,OK是可以满足的。如果是一个复杂的则他是不能满足的,你需要做如下的修改:
(1)portlet.xml:<portlet-class>com.liferay.portlet.StrutsPortlet</portlet-class>JSPPortlet改为StrutsPortlet,view-jsp改为view-action,<value>改为自已的。这样就和str ...
http://docs.liferay.com/4.3/official/liferay-43-plugins-guide.pdf这是一份liferay官方的文档,你只要按照上面来就可以配置出plugins sdk开发环境,你也可以直接把SKD/portlet/portlet.rar给解压了直接用,然后改个名字,就直接可以拿来开发了,然后把需要的包导入来,就OK了.不过这个工程一定要放在portlet文件夹下面,因为ant的时候要用到里面的xml.然后打成war放在{username}/liferay/deploy下面,这样只不过麻烦点,和按照他文档一步步配置是一样的效果.
liferay5.0+oracle10配置好后启动报如下错误:
15 May 2007 01:44:59,453 CPOR ERROR [http-8080-Processor24] util.ContentTransformerListener: org.dom4j.DocumentException: Error on line 1 of document : Content is not allowed in prolog. Nested exception: Content is not allowed in prolog.
at org.dom4j.io.SAXReader.read ...
等了好久终于等到了5.0的出现,download下来一看,突然发现自已好像啥也不会了,liferay5.0他提倡的是plugins开发方式,tomcat里面啥也没有了,郁闷只好重新deploy了一下,然后配置plugins-sdk自已做了一个简单的portlet,deploy然后发现ROOT下面啥也没有,郁闷极了,日志到是写成功了,找了半天发现他deploy到了bin/{jetty.home}下面了,为什么会这样,最初我以为是那里配置文件那里没有配好,在eclipse里面search关键字jetty.home啥也没有找到,逼不得已只好去找hot deploy相关代码,居然让我发现了lifera ...
先引用一篇别人的文章
Liferay是基于SOA理念设计的,很容易通过Web Services对外提供服务接口,下面简单介绍一下。
Liferay如何对外提供服务?
1、在service.xml中编辑,增加一个<entity name="xx" local-service="false" remote-service="true" />
2、ant build-service-xxxx (portal-impl/build.xml)
3、修改XXServiceImpl, 写入你要对外提供的方法逻辑;
4、ant build-service-xxxx (重复2)
5、ant build ...
因为下个项目要用到在liferay中调用远程的.net webservce,为了评估这个工作的开发的难度和可行性,这几天一直在搞这个,现在有了点成果拿出来和大家一起分享一下。
liferay调用webservice,有两种方法一种是用liferay提供的方法,一种是用普通JAVA调用方法,先说第二种。
我们没有必要自已亲自去写这些方法,我们可以用axis或xfire服务引擎,而且都有现成的插件可以用,axis可以去apache官网去下载(Axis2_Codegen_Wizard_1.3.0),这个插件是要用LINK方式来安装的,建目录{home}/axis2/eclipse/plu ...
这是在网上找的方法,怕忘记所以记下来,textarea录入时带有格式,录入数据库不必处理,如果显示时仍放在textarea,没有问题,但是如果直接打在页面上格式就没了,在打在页面上之前调用下面的方法
public static String zhuanyi(String sp,String sp1,String sp2)
{
String sTemp = sp;
String str ="";
if(sp==null||sp.equals(""))
{
return str;
}
tr ...
上周五去了大连参加liferay在中国的第一次用户交流会,地点在沙河口区高尔夫酒店三楼会议室,到会的用户并没有我想的这么多,可能和liferay进入中国的时间有关吧,去年十月在大连成立合资公司,liferay公司还是很重视的,liferay CEO AND CIO都去了,还有他们的两位工程师,并且很有幸能和他们的CIO合了一张影,也看到了温兵先生,我学习liferay可是看着温先生的BLOG来学习的,并且在大会上温先生学展示了自已的产品真是让人敬佩,大会结束本来很想和温先生有下交流的,可是温先生一直忙着和大连liferay交流了,有机会一定向温先生多多请教.
在大会上有一个提问的阶段, ...
省过配置直奔主题,如果你第一次开发工作流或者没有用过JBPM,见意你先去下载JBPM,他里面有一个和JBOSS绑好的service,启动,先感受一下工作流,这个过程网上有很多的文档,我这里就省过,这个对你在liferay中开发工作流很重要。
JBPM-WEB不能导出到ext工程里,这个很郁闷,在liferay源码中开发,他eclipse完全把这些文件当作是普通的文件,报错提示什么也没有,错了也不知道,我的做法是先在外面建一个普通的WEB工程,然后把JBPM-WEB下面的src拷到我面的WEB工程里然后把要的包导进来,这样开发起来就舒服多了,其他的工作和JBPM普通的开发一样了,先写一个工 ...
liferay搜索用的是lucene搜索引擎,lucene需要先建立索引然后再搜索,建立索引会在{user}/liferay/lucene下面保存着,拿日志文章来说他是在建新增一个文章的时候建立的索引,4.3.3版本以前只要建立一个文章他就会建立一个索引,到了4.3.3以后增加文章时有一个复先框是可以选择是否要加索引的,具体看com.liferay.portlet.journal.util.Indexer这个类,你可以看到他建了那些字段,当然这些操作都是在文章审批通过的情况下才会做,4.3.3以前的版本每次启动后会自动的在{user}/liferay/lucene下面的文件里增加索引,而到了4 ...
权限配置文件中:
<community-defaults>
<action-key>VIEW</action-key>
</community-defaults>
<guest-defaults>
<action-key>VIEW</action-key>
</guest-defaults>
访客和成员默认有了view权限,事实是否如此呢?回答:"不是".前几天客户反应新增加的产品访客看不见,只有把权限更新一下才能看得见,每一个都要更新无法接受,仔细跟进ProductCategoryPermission.contains(permission ...
工作流配置好后,操作的时候可能会报jaas.config文件找不到和java.lang.OutOfMemoryError错误,我把bin/catalina.sh最大内存调了很高了,还是报这个错,搞了一天搞不好,没办法在liferay官网求助,有人回:如果你用的eclipse记得把eclipse的jvm也调高,晕倒,我一直是用myEclipse来启动的,赶紧打开myEclipse配置application servers/tomcat5/jdk,开发前我已在这里设过
-Xms128m -Xmx512m
-Dfile.encoding=GBK
-Duser.timezone=GMT
-Dja ...
接着我上面的一篇,如果你选择用servicemix-web 中间件,你可能会报"15:20:47,701 ERROR [EditDefinitionAction:77] com.liferay.portal.kernel.jbi.WorkflowComponentException: java.lang.NullPointerException
com.liferay.portal.kernel.jbi.WorkflowComponentException: java.lang.NullPointerException
at com.liferay.portlet.workflow.servi ...
先引用网上流传的最多的一篇文章:
1、首先下载 Liferay Portal Professional 4.2.1 (Bundled with Tomcat for JDK 5.0)
2、使用其默认的 HSQL 数据库,即不去更改其数据库配置。
3、下载 liferay-portal-servicemix-4.2.1.war 和 iferay-portal-jbpm-4.2.1.war
http://www.liferay.com/web/guest/downloads
4、把下载的这两个包分别更名为jbpm-web.war 和 servicemix-web.war
5、把 jbp ...
接着(一)讲,在做持久化的时候会在新增的portlet包下面有一个service包(参考自动生成持久化代码那篇文章),增加一个名为permission的包,增加orderPermission.java,内容如下:
public static void check(
PermissionChecker permissionChecker, long plid, long categoryId,
String actionId)
throws PortalException, SystemException, Exception {
if (!contains(permi ...
liferay的很大一的一个特色就是权限,他的权限的确很棒,可以说帅的掉渣.首先在ext-impl/classes/下建一个文件夹resource-actions/default-ext.xml,假如我们要对数据库的order这个表做权限,那么我们再建一个order.xml,在default-ext.xml包含这个order.xml这个文件,如下:
<?xml version="1.0"?>
<resource-action-mapping>
<resource file="resource-actions/order.xml" />
所有新建的对象的权限文件都要包含在这里 ...
liferay对数据库的操作他有自已的一套写法,我们可以用service.xml来自动生成这些代码, 这样就省了不少力气.在ext-impl包的classes下面service.xml写上数据库表字段如下:
<?xml version="1.0"?>
<!DOCTYPE service-builder PUBLIC "-//Liferay//DTD Service Builder 4.3.0//EN" "http://www.liferay.com/dtd/liferay-service-builder_4_3_0.dtd">
<service-builder root-d ...
在liferay的init.vm和GUEST社区中自带的模板中经常能看到liferay中JAVA类的方法,一直想找到他是如何把这些类给导进来的,终于功夫不负有心人, com.liferay.portal.velocity.VelocityVariables类中你会发现所有的在vm中能看到的类都在这里做了定义,但是他写的类有限如果我们想调一个自已写的很困难,因为我目前还不是很清楚liferay的启动的机制,他是在那里执行的这些代码,所以我们没办法来重写他,如果直接在上面来改,然后打包觉得好像动作又大了点,有点杀鸡用牛刀.还有在这个类中insertHelperUtilities方法中把vc.put ...
这几天忙的像个鬼一样,好久没有更新blogs了,今天遇到了一个问题想骂娘,所以写出来希望大家遇到这样的问题有点帮助,开发portlet一般init.jsp一般都有:
PortletPreferences prefs = renderRequest.getPreferences();
String portletResource = ParamUtil.getString(request, "portletResource");
if (Validator.isNotNull(portletResource)) {
prefs = PortletPreferencesFactoryUti ...
刚配置好后的liferay启动后,只要是操作数据库的就会发现输入中文是乱码,解决方案如下:
修改portal-ejb/classes/system.properties文件,以适应中文环境
#user.country=US
user.country=CN
#user.language=en
user.language=zh_CN
#user.timezone=GMT
user.timezone=GMT+8
项目接近尾声了,客户突然提出了很多的功能性的开发,郁闷死为了赶上进度,从明天开始就要进行地狱式的开发了,在这期间我会把自已所有的心得全写上来,以前的开发环境被我做测试搞的乱七八糟,没办法只能重新配置了,关于配置在网上已经有很多了,自已偷了个赖就找了一篇写的比较好的比较完整的配置文档给COPY了过来,希望别人不会找我麻烦.先给说下
在后面的开发主要方向是日志文章,全文搜索,产品开发,权限四块.下面部分就是COPY过来的文档,我用的是4.3.2版本,要用ant1.7,数据库是oracle10G,驱动是10G.14最新的驱动,.12的会报错,控制台中文乱码,网上已经有很多的解决方法了,数据也会出现中 ...
前一段时间在做lifery新闻录入的时候发现有的新闻录入进去以后并不能显示出来,有的新闻显示正常,重新换一个新闻也能正常显示,当时时间很紧没有细看,心想反正换了一个可以显示先交给用户,没想上线后被用户当作BUG提出来了,元旦前最后一天查了一天终于查出来了问题,ViewArticleContentAction中excute有句代码
output = JournalArticleServiceUtil.getArticleContent(groupId, articleId, version, languageId, themeDisplay);就是在这句代码这里发生了变化,有的文章显示出来的值正 ...
liferay的邮件发送写的异常复杂,用了配置文件,我只要一个简单的发送功能,用他的实在是杀鸡用牛刀,自已写了一个发送的类,代码如下:
package com.ext.portlet.mail;
import java.util.Properties;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Address;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax ...
liferay可以同时开发多个网站,每个网站有一个域名,这个和tomcat的设定有点不同,在社区的配置页中可以直接设置,Virtual Host的Public Virtual 中写上外网域名,Friendly URL上写上“/”再加上url,保存。OK,这样再网页输入你的域名直接就到了你设定的这个网站。
com.liferay.portlet.language.action;
在这个文件里可以看得到,liferay是如何对本地的locale里的language进行设置的,
String languageId = ParamUtil.getString(req, "languageId");//取得languageId,这个ID我们也可以手动设置如:"en_US","zh_TW","zh_CN"之类的
Locale locale = LocaleUtil.fromLanguageId(languageId);//取得本地locale
httpSes.setAttribute(Globals.LO ...
在做门户网站中用到日志文章的可能性是非常大的,点击文章列表进入文章的详细页面,不管是设置弹出还是设置他的样式都很单调,我们可以对这两个按照客户的想法对他进行修改.弹出他的页面是在/html/portlet/journal/journal_article_content.jsp,而最大化的页面其实就是日志文章列表本身的页面/html/portlet/journal_articles/view.jsp,在标签<c:otherwise></c:otherwise>之间写的代码就是最大化时显示的内容,如果要修改就可以在里面修改,他本身的里面就显示了文章的内容<%= content % ...
这两天要做一个在线留言板,liferay本身提供的留言溥功能很强大,很多功能根本用不着的,所以打算自已做一个,本以为很简单的一个留言本结果花了一个星期的时间,郁闷之极。现在把一些经验写下来。
liferay-display.xml:
<portlet id="message_books" />
liferay-portlet-ext.xml:
<portlet>
<portlet-name>message_books</portlet-name>
<icon>/html/portlet/blogs/icon.png</icon>
<stru ...
<script type="text/JavaScript">
<!--
function MM_jumpMenu(targ,selObj,restore){ //v3.0
eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'");
if (restore) selObj.selectedIndex=0;
}
//-->
</script>
<div valign="top">
<table width="100%" border="0" cellspacing="0" cell ...
客户的网站要有一个能动态显示自已股票信息的模块,一般都不愿意花钱来买接口,这样的话就只能新增一个protlet从别的网站上来抓取信息了,至于如何新增portlet配置文件这里就不说了,主要说一下JSP、JAVA关键的代码。JSP代码如下:
<%
String url = "http://info.cmbchina.com/cmb2005stock/investaspxbin/stock/SingleStkHQ.aspx?channel=SSHQ&&stockid=股票ID";
String sTotalString = Gfun.getWebInfo(url);
String cd ...
在实际开发当中经常需要修改日志的一些设置,比如增加日志类型,扩展日志每页显示数量等等,这些都可以在portal.properties文件中找到初始化的地方,可以直接修改,但一般不建议这么做,可以在portal-ext.properties这个扩展的文件中增加你需要的,liferay会优先调用.
- 浏览: 56646 次
- 性别:

- 来自: 湖北

- 详细资料
搜索本博客
最近加入圈子
最新评论
-
liferay新增权限(二)
我真的真的真的很奇怪,博主太强了,你是怎么知道这些内容! 要不是看到你的这篇文 ...
-- by flyingcn -
liferay5.0 plugins sdk开 ...
慢慢来吧,用plugin做开发,慢慢的你会发觉生命周期、classLoader之 ...
-- by devilbaby -
liferay5.0 plugins sdk开 ...
呵呵,完整的资料没有,就是到处在网上找,这个过程异常的痛苦.
-- by Tyler_Zhou -
liferay5.0 plugins sdk开 ...
写的不错啊! 有这方面的资料?
-- by hatlar -
liferay4.3.2增加社区(网 ...
老大知道怎么修改liferay上的logo图标么?
-- by hatlar






评论排行榜