liferay5.0 plugins sdk开发现的一个小秘密

等了好久终于等到了5.0的出现,download下来一看,突然发现自已好像啥也不会了,liferay5.0他提倡的是plugins开发方式,tomcat里面啥也没有了,郁闷只好重新deploy了一下,然后配置plugins-sdk自已做了一个简单的portlet,deploy然后发现ROOT下面啥也没有,郁闷极了,日志到是写成功了,找了半天发现他deploy到了bin/{jetty.home}下面了,为什么会这样,最初我以为是那里配置文件那里没有配好,在eclipse里面search关键字jetty.home啥也没有找到,逼不得已只好去找hot deploy相关代码,居然让我发现了liferay的一个小秘密.ServerDetector中
public static String getServerId() {
ServerDetector sd = _instance;

if (sd._serverId == null) {
if (ServerDetector.isGeronimo()) {
sd._serverId = GERONIMO_ID;
}
else if (ServerDetector.isGlassfish()) {
sd._serverId = GLASSFISH_ID;
}
else if (ServerDetector.isJBoss()) {
sd._serverId = JBOSS_ID;
}
else if (ServerDetector.isJOnAS()) {
sd._serverId = JONAS_ID;
}
else if (ServerDetector.isOC4J()) {
sd._serverId = OC4J_ID;
}
else if (ServerDetector.isOrion()) {
sd._serverId = ORION_ID;
}
else if (ServerDetector.isPramati()) {
sd._serverId = PRAMATI_ID;
}
else if (ServerDetector.isResin()) {
sd._serverId = RESIN_ID;
}
else if (ServerDetector.isRexIP()) {
sd._serverId = REXIP_ID;
}
else if (ServerDetector.isSun7()) {
sd._serverId = SUN7_ID;
}
else if (ServerDetector.isSun8()) {
sd._serverId = SUN8_ID;
}
else if (ServerDetector.isWebLogic()) {
sd._serverId = WEBLOGIC_ID;
}
else if (ServerDetector.isWebSphere()) {
sd._serverId = WEBSPHERE_ID;
}

if (ServerDetector.isJetty()) {
if (sd._serverId == null) {
sd._serverId = JETTY_ID;
}
else {
sd._serverId += "-" + JETTY_ID;
}
}
else if (ServerDetector.isTomcat()) {
if (sd._serverId == null) {
sd._serverId = TOMCAT_ID;
}
else {
sd._serverId += "-" + TOMCAT_ID;
}
}

if (_log.isInfoEnabled()) {
_log.info("Detected server " + sd._serverId);
}

if (sd._serverId == null) {
throw new RuntimeException("Server is not supported");
}
}

return sd._serverId;
}jetty的判断在tomcat的前面,而他做判断是根据能不能生成不同web server服务器的server.class来判断你是用的tomcat还是jetty还是其他的.
而plugins-sdk自动生成portlet的时才有两名代码
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
这两个类本身是不识别的,在portal-src中他是在selenium-server.jar中的,所以我也直接引入了这个包,tomcat中没有这个包,我直接把他放到了tomcat中去了,而这个包中能找到/org/mortbay/jetty/Server.class这个类,这个就是jetty服务器用的,jetty判断写在tomcat之前,自然系统就以为你用的是jetty服务器.可是为什么没有这个包之前,那其他的类为什么能识别这个呢,原来liferay不知道出于什么目的,在开发中用的是selenium-server.jar这个包,而在真正发布的时候他用的是commons-logging.jar这个包,其实这本身就是apache的log包,打开selenium-server.jar这个包会发现里面也包括了commons-logging的内容.所以说解决方法也很简单,用commons-logging.jar而不要去用selenium-server.jar.

你可能感兴趣的:(apache,eclipse,tomcat,weblogic,Glassfish)