3

在Liferay的6.1级ServletResponseUtil已被移动到不同的包比在Liferay的6.0:如何保持不同的portlet代码库对Liferay的6.0和6.1

//Liferay 6.0, 
// this class lives in util-java.jar in the default tomcat web app, /webapps/ROOT/lib. 
import com.liferay.util.servlet.ServletResponseUtil; 

//Liferay 6.1 
// class lives in portal-service.jar in directory tomcat-7.../lib/ext/ 
//import com.liferay.portal.kernel.servlet.ServletResponseUtil; 

类是在我们的代码中使用这样的:

String result = personComponentImpl.process(request); 
    response.setContentType("text/xml"); 

    try { 
     ServletResponseUtil.write(response, result); 
    } 
    catch (Exception e) { 
     if (_log.isWarnEnabled()) { 
      _log.warn(e, e); 
     } 
    } 

我必须维护和改进为Liferay 6.0版本编写的portlet。 现在我们正在考虑升级到6.1,但是在portlet的内部测试中,我发现有几行代码会破坏上述依赖关系。运行时6.1上有ClassNotFoundExceptions。

我的eclipse项目设置为6.0。

什么应该怎么办?:

  • 维护portlet代码的两个不同的分支。这是可行的,但可能是从长远来看

  • 维持两个不同的Eclipse项目与一个代码库太多精力,但具有不同的构建路径(这只是一个总体战略,可能没有真正的工作)

  • 在java代码中包含一个聪明的黑客,轻松构建6.0,一次为6.1(也许是工厂......这只是一个模糊的想法)

  • 包含一个新的ant任务,构建+部署6.1,尽管Eclipse设置为6.0版本

  • Re完全移动对ServletResponseUtil类的依赖关系,使用与ServletResponseUtil相同的另一个类。

  • 做别的事情

回答

2

由于ServletResponseUtil不小于350线长,非常详细,甚至马车实施response.getOutputStream().write(data);得多了,我会选择“使用另一个类,做同样的”。

也许你应该结合一点“做点别的事”和从来没有依靠Liferay API的稳定性。

+0

我只是在这里查看这个类的源代码http://docs.liferay.com/portal/6.0/javadocs/src-html/com/liferay/util/servlet/ServletResponseUtil.html,现在将替换旧的导入语句(见上面),导入我自己的包,这将是一个定制的ServletResponseUtil。 – knb 2012-03-09 10:04:55

相关问题