在Liferay 6.1中, ServletResponseUtil 类已移至与Liferay 6.0不同的包中:
//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
完全删除对ServletResponseUtil类的依赖,使用另一个与ServletResponseUtil相同的类。
做其他事情
答案 0 :(得分:2)
由于ServletResponseUtil不超过350行,非常冗长,甚至是response.getOutputStream().write(data);
的错误实现,我会选择"使用另一个同样的#34;。
也许你应该把它与一点点"做其他事情"并且从不依赖Liferay API的稳定性。