Archive for the '备忘' Category

用Eclipse3.5+axis2搭建web services 开发和发布环境

xtykc 07月 14th, 2010

常用的Webservices 框架有axis2XfireApache CXF等,我们选择了比较简单的axis2。axis2目前最新的版本是1.5.1,
不仅支持SOAP 1.1和SOAP 1.2,还支持 REST。
选择axis2的一个重要理由是它有两个非常管用的Eclipse插件(Axis Eclipse Plug-in):代码生成工具(Axis2 code ge
nerator)和服务打包工具(Axis2 service archiver),前者在生成客户端测试代码时用,后者在打包发布时非常好用。
曾经尝试用MyEclipse7.0+axis2,但安装好的插件却怎么也不好使,遂放弃。
1.下载并安装Eclipse3.5
将下载到的Eclipse解压缩到一个目录,命名为“eclipse”或任何其他名称,打开该目录,找到一个名为eclipse.exe的可执行
文件,双击它,即可运行eclipse开发环境,eclipse是无需安装的,相比于MyEclipse,这点真是太重要了。
2.下载并安装Axis Eclipse Plug-in
在搜索引擎上输入“axis2 eclipse plug-in”这几个关键词,即可找到插件的下载地址,选取一个较为成熟稳定的版本下载,
我选择了1.3。将得到的两个压缩文件解压缩,得到Axis2_Codegen_Wizard_1.3.0和Axis2_Service_Archiver_1.3.0两个
文件夹,放到eclipse\plugins目录下,进入D:\eclipse\links目录,如果没有links目录就自己新建一个,在links目录下
新建link文档命名为”axis-eclipse-plugin.link”,编辑该文档,写上path=D:\eclipse\plugins,保存,好了,重启
eclipse,在菜单上依次点击file-new-other,如果看到以下画面,恭喜你,插件安装成功了!

3.下载Axis2并在Tomcat上部署Axis2
这里的axis2即是web services的开发包和框架(或者说容器)。在搜索引擎上输入“axis2 下载”,找到axis2的下载页面,
选择一个和上面安装的插件相同的版本下载,我的是1.3,下载到axis2-1.3-bin.zip和axis2-1.3-war.zip这两个压缩文
件,bin.zip是开发包,解压缩后得到一大堆jar文件,war.zip是部署在tomcat上的web services 容器,解压缩后得到
axis2.war,将axis2.war文件包放在tomcat的webapps下,重启tomcat,tomcat的webapps下会出现一个axis2的文件夹,在浏
览器上输入http://localhost:8080/axis,如果看到以下界面,就说明这个容器部署好了。

4.业务代码打包和发布
在eclipse上建一个工程,在Build Path里面导入上述bin.zip解压缩后得到的jar包,编写好业务代码和web services接
口,接口里面应该有一些public的方法以供调用。代码写好了之后,可以打包发布了,菜单file-new-other-Axis2
service archiver,出现如下界面,正确选择你的web services接口编译后的.class文件所在的目录,应该是最上层的
package所在的根目录,不包括package,如:D:\workspace\syncData\WebRoot\WEB-INF\classes。

然后一路next下去直到如下图所示:

在class name栏填写好类名和它的package名如:syncdata.syncShLibMyLibResult(syncdata为package名,syncShLibMyLibResult为类名),点击load,即可看到该类所有的public方法,选择好需要发布的方法,再点next,得到如下图所示的界面:

上图中output file location的地址(D:\Tomcat\webapps\axis2\WEB-INF\services)即为web services接口的发布地址,填写好后点击finish,弹出成功窗口,同时会在D:\Tomcat\webapps\axis2\WEB-INF\services目录下发现打包好的.aar文件,axis2默认支持热发布,这时该接口以及发布完成。也可以任意指定output file location的地址,只要发布时将得到的.aar文件拷贝到D:\Tomcat\webapps\axis2\WEB-INF\services下即可。在浏览器上输入http://localhost:8080/axis2/services/listServices,即可看到已经发布成功的web services接口和方法,如有发布不成功的情况,也可以在此页面上看到。

注意:当重新发布相同的web services接口时,需要删除tomcat/webapps下的整个axis2目录,将之前下载到的axis2.war包重新部署,再重新打包发布web services接口,即使将axis2的配置参数改为支持热更新也不行,尚不知何故。

drupal上传文件时“截断文件名开头中文”问题的解决

xtykc 01月 29th, 2010

很多人反映drupal上传文件时不支持中文文件名(文件名变成乱码)的问题,实际上在新版本中这个问题已经得到了解决,但是解决得不完美。

我遇到的问题是,文件名如果以中文开头,上传后,系统会自动截断文件名开头的中文部分。如《某某单位ABC系统测试报告.doc》这个文件上传后变成《ABC系统测试报告.doc》,如果是英文开头的即使包含中文也不会有问题,如《ABCDE学习指南.doc》这个文件上传后就是正常的,数字开头的也不会有问题。

很多人推荐使用统一字符编码的transliteration模块,我下载使用了下,发现它会把中文翻译成拼音,虽然不会出现文件名截断的问题,但并不是我想要的。看来只能从代码层面来解决问题了。

在drupal中掌管文件上传的代码在../includes/file.inc这个文件中,截断文件名的情况发生在语句:

$file->filename = file_munge_filename(trim(basename($_FILES['files']['name'][$source]), ‘.’), $extensions);

之后,是因为basename函数有时会截去某些UTF8字符的,原因是basename函数的结果取决于当时的locale设置:

The results of the basename() function are dependent on your locale setting.
If basename() is returning blank results for strings with multibyte characters, you can try including the following in your script:
<?php
setlocale
(LC_ALL, ‘en_US.UTF8′); # or any other locale that can handle multibyte characters.
?>

However, the best solution to do this would be to change the locale setting on your system or webserver. For example, on Debian systems, this is done in /etc/init.d/apache

对于CentOS的apache,确实存在这样的情况

The system locale in mod_php seems to be set to "C" instead of the locale of the system (which is "en_US.UTF8" in my case).

一种方法就是setlocale:

The workaround is to explicitely set the locale with "setlocale(LC_CTYPE, "en_US.UTF-8")".

另一种方法是修改httpd的启动脚本:

vi /etc/sysconfig/httpd
HTTPD_LANG=en_US.UTF8

理论上应该修改为en_US.UTF8,但是提交bug的人建议修改为en_US:

I tried it, but it didn't seem to work first. Now I got it to work. It works only with strings like "en_US" and not with "en_US.UTF8". The result is then the same as on CentOS 4 with PHP 4. However, on CentOS 4 the HTTPD_LANG variable is set to "C" as well.
我采用第一种方法,打开file.inc,在代码
$file->filename = file_munge_filename(trim(basename($_FILES['files']['name'][$source]), ‘.’), $extensions);
之前插入一行:
setlocale(LC_ALL, 'en_US.UTF8');
问题解决。
感谢涂虫小记的博文:WebFM模块的中文支持问题

Drupal & Library (二):万物皆“模块”

xtykc 11月 24th, 2009

模块的概念是Drupal最大的特色之一,有人把Drupal比喻成一个操作系统,模块则相当于应用软件,需要扩展什么功能,都可以通过模块的即插即用来达成。

Drupal具有博客、论坛、协同写作、评论、标签、投票、RSS订阅、RSS输出等功能,这些功能都是以模块化的方式管理的,每种特定的功能都作为独立的模块存在,Drupal的新功能通常都是通过模块(module)的方式来导入。管理员可以通过启用或关闭某一模块来决定某一功能是否可用。

Drupal的功能模块分为核心的功能模块、基本的功能模块和扩展的功能模块。核心功能模块是必需的,安装后即默认开启,不能关闭,包括区块(Block)、过滤器(Filter)、节点(Node)、系统管理(System)、用户管理(User);基本的功能模块也是Drupal安装后自带的,默认为关闭,需要管理员开启后才可用(据说Drupal7已经将cck和views作为基本的模块了,这两个模块结合起来,基本上能实现所有一般性的内容管理的需求);扩展的功能模块可以到Drupal官方网站下载。这些模块都可以免费下载,安装配置和卸载都异常简单,每个模块解压缩后都是一个文件夹,安装就是将该文件夹拷贝到Drupal安装目录下的modules文件夹中即可,管理员经过简单的配置,用户就可以使用,要卸载该模块只需从modules文件夹中删除该文件夹。

这种简单易用性降低了其使用的门槛,这种灵活性使得其应用范围非常广泛,可以架设单一功能的平台,如博客,wiki,bbs,也可以集数种功能于一站。

时至今日,我们已经习惯了那些能够把功能分解成一个一个独立的模块,可以即插即用的软件;而那些紧密耦合的系统,不仅禁锢了自己的发展,也绑架了他人(用户)的自由,这也和LIB2.0的精神如出一辙:开放、互动、互惠。图书馆存在的理由,就是被读者所需要,人又何尝不是?我们不过是花花世界里的一张拼图,或者是上帝棋盘上的一颗棋子,有自己的颜色,也有自己的位置。

这是一个拥挤的世界

没有人能带着尖锐的棱角生存

你孤芳自赏,闭紧了窗,关上了门

总有一天你会发现

所有你想进入的门窗都已消失不见,也许,除了博物馆

荣幸地做一个模块吧

磨光你的棱角,融入他人,波泽他人,也被他人惠及

你将无处不在,也不能不在。

开源OPAC2.O资料

xtykc 11月 17th, 2009

从收集到的资料来看,2009年,OPAC2.0好像集体失语了。难道和LIB2.0一样,已经是明日黄花了吗?还是大家都埋头苦干去了?

1.scriblio:

Posted February 25, 2009 by Casey Bisson Scriblio 2.7 Released
05.09.2008 Classic Resplendent 2008數位典藏國際會議心得—”The Social Life of Archives”
02.27.2008 Matt Mullenweg:Scriblio for Libraries
05.10.2008 编目精灵:香港科技大学的Scriblio实验目录
10.08.2007 钱涂无量: Scriblio:基于Wordpress的图书馆应用
2007 黄田青:Scriblio 给我们的启示
December 11, 2007 by Casey Bisson Scriblio 2.3 v4 Released
February 9, 2006 by Casey Bisson WPopac: An OPAC 2.0 Testbed
  • 例子:

Lamson Library of Plymouth state University普利茅斯州立大学

Cook Memorial Library

Byond Brown Paper(图片档案馆

Boston University School of Theology’s History of Missionlogy collection,

香港科技大学图书馆

2.VuFind

  • 最新消息(2009.9.30):

National Library of Ireland, University of Michigan, Wake Forest, Colorado State, York University, London School of Economics, University of Georgia的VuFind上线了!

October 16, 2008,1.0版发布

  • 中文博客报道:
12.15.2008编目精灵:耶鲁大学的VuFind使用调查
12.11.2008编目精灵:再看国外流行的开源软件──第三届梅隆技术协作奖
09.15.2007高山流水: VuFind
07.23.2007编目精灵:开源OPAC发布:VuFind

耶鲁大学

National Library of Australia

Villanova University Library

3. sopac

  • 国外报道:

《图书馆杂志》:Darien Library’s Open Source SOPAC 2.0 Emphasizes Patron Content / Josh Hadro. Library Journal, 8/29/2008
Talis的访谈:Panlibus Blog: John Blyberg Talks with Talis about SOPAC 2.0 (1st September 2008)

  • 中文博客报道(部分由编目精灵整理):
01.22.09 数图研究笔记:2008图林十大技术进展(下)
30.09.08 编目精灵:开源OPAC前端软件SOPAC 2.0下载
(2008-09-02)冰城节日:热闹的“达连湾”图书馆
(2nd Sep 2008)圖書館觀點:SOPAC 2.0
(9月 1st, 2008)数图研究笔记:SOPAC2.0发布
(2nd Feb 2008) 圖書館觀點:Web 2.0 工具不是萬能靈丹 (xtykc注:对2.0的反思、反省,重点推荐!)
(2007-01-22)编目精灵:AADL的新版OPAC

07.15.09 PVLD Goes Live with SOPAC
09.25.08 SOPAC 2 Released. Thesocialopac.net Launched.
09.01.08 A new DarienLibrary.org
11.14.08 SOPAC for Sirsi? Yes we can.
08.16.08 SOPAC 2.0: What to Expect
01.17.08 Library 2.0 Debased.
01.25.07 SOPAC, 4 days later.
01.21.07 AADL.org Goes Social

其它:

[PDF]开放源代码OPAC系统的比较: Scriblio和VuFind

Drupal6.14在PHP5.3上安装问题的解决

xtykc 10月 27th, 2009

vmware虚拟机上装好了centos,再下载了一个xampp1.7.2,下载Drupal最新发布的6.14,安装时出现了以下报错:

Function ereg() is deprecated in … … \includes\file.inc on line 905

查了下,原来,Drupal6.x只适合于安装在PHP5.2上,我下载的xampp1.7.2是PHP5.3,解决办法可参照这里,修改\includes\file.inc文件的905行:

Change

elseif ($depth >= $min_depth && ereg($mask, $file)) {

to

elseif ($depth >= $min_depth && mb_ereg($mask, $file)) {

问题解决。

Fckeditor for Multisites of Drupal

xtykc 09月 27th, 2009

安装基本与单站点一样,安装后出现图片上传后无法显示的问题,这是因为config.php中配置的文件上传路径是绝对路径,但在多站点情况下,站点的域名是多样甚而未知的,应该修改为以变量($_SERVER["SERVER_NAME"])表示的相对路径。

修改:modules/fckeditor/fckeditor/editor/filemanager/connectors/php/config.php

$Config['Enabled'] = true ;

// Path to user files relative to the document root.
$Config['UserFilesPath'] = ‘/sites/’.$_SERVER["SERVER_NAME"].’/files/’;

参考:http://drupal.org/node/231917

Tomcat 下定时任务的实现

xtykc 08月 15th, 2009

有时候,我们不希望由于断网和误操作等原因导致浏览器端执行的任务受到干扰或中断,因此希望由服务器承担一部分工作,反复扫描,定时处理,这时,就需要用到定时任务。

这里,我没有采用线程的方式,而是用到了两个类:ServletContextListener 和 TimerTask。前者实现定时器,后者实现我们的任务。

1.写一个类实现ServletContextListener接口,作为定时器。

———————————————————

package fund.yzz;

import java.util.Timer;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
public class MyListener implements ServletContextListener{
private Timer timer = null;

public void contextDestroyed(ServletContextEvent event) {
timer.cancel();
event.getServletContext().log(”定时器销毁”);
System.out.println(”停止创建预制卡程序……”);
}

public void contextInitialized(ServletContextEvent event) {
//在这里初始化监听器,在tomcat启动的时候监听器启动
timer = new Timer(true);
event.getServletContext().log(”定时器已启动”);//添加日志,可在tomcat日志(一般在localhost)中查看到
timer.schedule(new MyTask(event.getServletContext()),0,5*1000);//调用 exportHistoryBean,0表示任务无延迟,5*1000表示每隔5秒执行任务,60*60*1000表示一个小时;
}
}

————————————————————————————

2.写一个类继承TimerTask, 覆写 public void run()方法,使之执行我们自己的代码

—————————————————————————-

package fund.yzz;

import java.util.Calendar;
import java.util.TimerTask;
import javax.servlet.ServletContext;
import fund.utility.*;
import fund.database.*;
public class MyTask extends TimerTask
{
private static final int C_SCHEDULE_HOUR = 0;
private static boolean isRunning = false;
private ServletContext context = null;
public MyTask(ServletContext context){

this.context = context;
}
public void run(){
Calendar c = Calendar.getInstance();

if(!isRunning){
if(C_SCHEDULE_HOUR == c.get(Calendar.HOUR_OF_DAY))

isRunning = true;
context.log(”开始执行指定任务”);

//———————————————————————————-

//在这里放上我们自己的代码
createyzz cy=new createyzz();
String str;
str=cy.create();
context.log(str);

//———————————————————————————-
isRunning = false;
context.log(”指定任务执行结束”);
}else{
context.log(”上一次任务执行还未结束”);
}
}
}

————————————————————————————-

3.配置web.xml文件

在tomcat/webapps/工程名/WEB-INF下新建一个web.xml文件,如果没有web.xml文件的话。新建的xml文件只包含以下代码:

<?xml version=”1.0″ encoding=”ISO-8859-1″?>

<web-app xmlns=”http://java.sun.com/xml/ns/javaee”
xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”
xsi:schemaLocation=”http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd”
version=”2.5″>

<listener>
<listener-class>fund.yzz.MyListener</listener-class>
</listener>

</web-app>

如果原来存在web.xml,就在<web-app></web-app>之间加上上面红色部分。

fund.yzz是包名,MyListener是实现ServletContextListener接口的类名。

tomcat在启动时会读入该web.xml文件,找到listener监听的定时器,按照其中的时间设置定时执行任务。定时器在tomcat启动时生效,在tomcat关闭时销毁。

4.注意:

在同一服务器上,不可以同时存在多个监听同一定时器的web.xml文件,也就是说同一个定时器只能单独存在于一个服务器上,否则会出错。

参考:http://www.javadn.com/simple/index.php?t430.html

java 操作 EXCEL

xtykc 07月 23rd, 2009

//导入POI。
//需要下载poi包,解压缩后将三个.jar文件拷贝到%JDK%\jre\lib\ext下,其中%JDK%为JDK所在的目录路径

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;

// 一个Excel文件的层次:Excel文件->工作表->行->单元格 对应到POI中,为:workbook->sheet->row->cell

//应用举例(以下为主要代码片段):

HSSFCell aCell;
try {
// 创建对Excel工作簿文件的引用
HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream(fileToBeRead));

if (null != workbook.getSheetAt(0)) {
HSSFSheet aSheet = workbook.getSheetAt(0);//获得一个sheet
//System.out.println(aSheet.getLastRowNum());
for (int rowNumOfSheet = 1; rowNumOfSheet <= aSheet.getLastRowNum(); rowNumOfSheet++) {

if (null != aSheet.getRow(rowNumOfSheet)) {
HSSFRow aRow = aSheet.getRow(rowNumOfSheet);//获得一行

aCell=aRow.getCell(cellNo);//获得一行中的第cellNo个单元格的值

//判断单元格的值是否为数值类型
if(aCell.getCellType()==HSSFCell.CELL_TYPE_NUMERIC){

strCell=String.valueOf(aCell.getNumericCellValue());
strCell=strCell.substring(0,strCell.indexOf(”.”));
}else{
strCell=aCell.getStringCellValue();  }

for (short cellNumOfRow = 0; cellNumOfRow <= aRow.getLastCellNum(); cellNumOfRow++) {

//取得每一行的每一列
aCell = aRow.getCell(cellNumOfRow);

if(aCell.getCellType()==HSSFCell.CELL_TYPE_NUMERIC){

strCell=String.valueOf(aCell.getNumericCellValue());
strCell=strCell.substring(0,strCell.indexOf(”.”));
}else{
strCell=aCell.getStringCellValue();  }
}

}
}

} catch (Exception e) {
System.out.println(”ReadExcelError” + e);
}

java控制打印

xtykc 07月 23rd, 2009

//导入awt包

import java.awt.*

//写一个类实现Printable接口

public class PrintTest   implements Printable{

/**
* @param Graphic指明打印的图形环境
* @param PageFormat指明打印页格式(页面大小以点为计量单位,1点为1英才的1/72,1英寸为25.4毫米。A4纸大致为595×842点)
* @param pageIndex指明页号
**/

//重写print方法

public int print(Graphics gra, PageFormat pf, int pageIndex) throws PrinterException {

String printStr = “要打印的内容”;

//转换成Graphics2D
Graphics2D g2 = (Graphics2D) gra;
//设置打印颜色为黑色
g2.setColor(Color.black);

//打印起点坐标
double x = pf.getImageableX();
double y = pf.getImageableY();

//设置打印字体(字体名称、样式和点大小)(字体名称可以是物理或者逻辑名称)
//Java平台所定义的五种字体系列:Serif、SansSerif、Monospaced、Dialog 和 DialogInput
Font font = new Font(”宋体”, Font.PLAIN, 11);
g2.setFont(font);//设置字体

heigth = font.getSize2D();//字体高度

width = heigth/2;//西文字体宽度

//打印字符,printStr为要打印的内容,x,y为打印起始的横纵坐标

g2.drawString(printStr, float(x), float(y));

}

//写一个main方法调用print方法

public static void main(String[] args) {

//    通俗理解就是书、文档
Book book = new Book();
//    设置成竖打
PageFormat pf = new PageFormat();
pf.setOrientation(PageFormat.PORTRAIT);
//    通过Paper设置页面的空白边距和可打印区域。必须与实际打印纸张大小相符。
Paper p = new Paper();
p.setSize(693,840);//设置纸张大小
p.setImageableArea(10,10, 693,840);//A4(595 X 842)设置打印区域,其实0,0应该是72,72,因为A4纸的默认X,Y边距是72
pf.setPaper(p);
//    把 PageFormat 和 Printable 添加到书中,组成一个页面
book.append(new PrintTest(), pf);

//获取打印服务对象
PrinterJob job = PrinterJob.getPrinterJob();
// 设置打印类
job.setPageable(book);

try {
//可以用printDialog显示打印对话框,在用户确认后打印;也可以直接打印
//boolean a=job.printDialog();
//if(a)
//{
job.print();
//}
} catch (PrinterException e) {
e.printStackTrace();
%

用MyEclicpse7.0搭建Liferay Portal 5.1.1的开发环境

xtykc 04月 3rd, 2009

需要软件:

MyEclicpse7.0 下载地址

liferay-portal-src-5.1.1.zip ;liferay-portal-tomcat-5.5-5.1.1.zip; liferay-portal-sql-5.1.1.zip下载地址

步骤:

1.安装JDK1.6,ant1.7,配置环境变量(略)

2. 安装 Myeclipse并建立portal工程

(1)安装myeclipse,并为MyEclipse配置JDK1.6和ant1.7(myeclipse的默认设置为JDK1.5,省了这一步在3.(2)这一步时会出现“Error starting modern compiler”的错误,编译不能通过),具体做法是,

myeclipse->window->preferences->ant->add jres:ant安装路径;myeclipse->window->preferences->complier->JDK compliance->complier->compliance level:1.6

(2)在D盘建立D:\portalspace目录,将liferay-portal-src-5.1.1.zip解压到D:\portalspace\portal目录下,
(3)进入myeclipse,设置file–>Switch Workspace 输入D:\portalspace,OK确认,
(4)File –>New–>project–>java project 输入项目名称为portal,其他默认,Finish结束,
如果一切顺利,则在myeclipse左侧边Navigator上看到portal的整个目录结构
3. 建立ext工程(扩展环境)
(1)在myeclipse下,切换到resource视图模式,展开portal工程目录,我们可看到一个release.properties文件,实际上我们要建一个它的扩展配置文件,文件名为release.${username}.properties。 ${username}是计算机当前用户名,比如administrator,apple等等.在计算机开始菜单运行cmd出来的 C:\Documents and Settings\Administrator>
为什么非得计算机当前用户名,因为portal用了ant作deploy,里面有个xml配置文件使用了系统环境变量。我文件名是release.Administrator.properties,文件内容只一行:lp.ext.dir=D:\portalspace\ext即扩展工程放置路径。
(2)打开myeclipse里面ant视图(window–> show view –> ant) , 在ant视图中,点击添加,选择 :\portalspace\portal\目录下build.xml。顺序执行clean ,start ,build-ext 成功的话,在D:\portalspace\ext目录下产生一系列的文件和目录。有时候在compile过程中会失败,报错(解决办法见上文)。
(3)将 liferay-portal-tomcat-5.5-5.1.1.zip解压到 D:\portalspace\bundles\tomcat-5.5.26下,在D:\portalspace\ext目录下我们可以看到app.bundles.properties文件,同样我们也要建立一个扩展配置文件 app.server.${username}.properties,文件内容两行:
lp.ext.dir=D:\portalspace\ext
app.server.type=tomcat
(4) 同样建立一个java project。工程名为ext.在myeclipse的Navigator里面可以看到ext工程的目录结构。
4. 配置ext工程tomcat服务器设置
(1) 打开 window –> preference –> myeclipse –> application servers 将其他应用服务器disabble掉,找到tomcat5,将tomcat home diretory 指向D:\portalspace\bundles\tomcat-5.5.26,展开tomcat5,JDK选择我们配置好的JDK1.6.0_07,JDK选项下面 optional jave vm argument输入如下内容:
-Xms256m
-Xmx512m
-XX:MaxPermSize=128m
-Djava.security.auth.login.config=D:/portalspace/bundles/tomcat-5.5.26/conf/jaas.config
(2) 将D:\portalspace\bundles\tomcat-5.5.26\conf\Catalina\localhost目录下的ROOT.xml文件内容修改为:
<Context path=”" crossContext=”true”>

<Resource
name=”jdbc/LiferayPool”
auth=”Container”
type=”javax.sql.DataSource”
driverClassName=”net.sourceforge.jtds.jdbc.Driver”
url=”jdbc:jtds:sqlserver://localhost/lportal”
username=”sa”
password=”**********”
maxActive=”20″
/>

<Resource
name=”mail/MailSession”
auth=”Container”
type=”javax.mail.Session”
mail.imap.host=”localhost”
mail.pop3.host=”localhost”
mail.smtp.host=”localhost”
mail.store.protocol=”imap”
mail.transport.protocol=”smtp”
/>

<Realm
className=”org.apache.catalina.realm.JAASRealm”
appName=”PortalRealm”
userClassNames=”com.liferay.portal.kernel.security.jaas.PortalPrincipal”
roleClassNames=”com.liferay.portal.kernel.security.jaas.PortalRole”
/>

</Context>
5. 建立数据库
(1) 安装SQL Server 2005

(2) 解压缩liferay-portal-sql-5.1.1.zip,在SQL Server 2005上执行包中\sql\create下的create-sql-server.sql

(3) 将sqljdbc.jar 拷贝到D:\portalspace\ext\bundless\tomcat-5.5.26\common\lib下。

以上所有步骤顺利完成后,启动myeclipse 里面tomcat服务,启动正常的话,在浏览器里输入http://localhost:8080/ 就可以看到portal系统了。

以用户名test,密码test登录并同意它家的协议后,会得到如下页面:

参考:http://toney-pp.javaeye.com/blog/308444

Next »