傳統觀點:J2EE = 全功能容器(EJB、JTA、JNDI、JMS、JCA、JMX)。但許多服務器應用(如輕量級 Web 容器、消息網關)僅需部分服務,強行上全棧容器資源浪費大、部署複雜。能否在 J2SE 中「按需引用」J2EE 標準介面的輕量級實現?
J2EE 組件通過 JNDI 查找 而非硬編碼依賴,JMS 提供異步解耦。這兩大思想同樣適用於 J2SE 應用,關鍵在於擁有標準介面的輕量級實現。
util.concurrent 實現,單 JVM 內運作log4jjndi.properties(見文中清單 1)org.jnp.server.Mainjnpclient.jar應用可像 J2EE 一樣用 JNDI 做「開關板」:DataSource、ConnectionFactory、工廠對象統一綁定/查找,組件鬆耦合裝配。
MBean(start/stop、屬性 getter/setter)public interface WebServerMBean {
void create(); void start(); void stop(); void destroy();
int getPort(); void setPort(int port);
String[] getWebApplications();
}
通過 Somnifugi JMS + JNPServer/JMX,J2SE 應用可低成本擁有「消息、命名、管理」三大企業級能力,並在未來平滑遷移至重量級產品。這正是「面向介面編程、部署時綁定實現」的最佳實踐。