我计划将GlassFish v3开源版本部署到生产环境中。它带有JavaDB(Apache Derby),这正是我需要的。唯一的问题是GlassFish启动时默认情况下不启动JavaDB。我必须转到命令行并输入:
asadmin start-database
有没有办法让数据库在服务器(GlassFish)启动时自动启动?我讨厌每次在开发应用程序时手动执行此操作,我当然不希望在生产中这样做。
提前致谢
答案 0 :(得分:9)
这有点过时但是Eclipse的偏好中的GlassFish部分中有一个复选框,标题为“启动GlassFish Server时启动JavaDB数据库进程”。我正在运行Eclipse Indigo SR1。
答案 1 :(得分:6)
一旦投入生产,您可以启动数据库一次并让它保持运行,无论应用服务器的状态如何。
您可以创建一个shell脚本,将“start-domain”和“start-database”捆绑为单个uber-start命令。
答案 2 :(得分:3)
这就是我所做的,我将它部署到打包为EJB JAR的服务器上。这将使Derby服务器能够作为自己的企业应用程序启动。
import java.io.PrintWriter;
import javax.annotation.PostConstruct;
import javax.ejb.Singleton;
import javax.ejb.Startup;
import org.apache.derby.impl.drda.NetworkServerControlImpl;
@Singleton
@Startup
public class LocalDatabase {
private NetworkServerControlImpl networkServerControlImpl = null;
@PostConstruct
private void init() throws Exception {
networkServerControlImpl = new NetworkServerControlImpl();
networkServerControlImpl.start(new PrintWriter(System.out));
}
}
答案 3 :(得分:3)
我建议利用Derby可以同时执行嵌入式服务器(即在应用服务器JVM中运行)和网络服务器(即服务客户端)这一事实从本地主机发送到默认端口1527的请求。因此,您可以从嵌入模式的性能提升中受益,但仍允许从例如" IJ"在服务器运行时管理数据,以及通过TCP / IP从其他服务器实例管理适当的安全设置。 在该配置中,Derby与应用程序服务器一起启动和停止。无需额外命令或显式服务器启动代码即可启动derby。
下面针对Glassfish 4和derby / javaDB 10.10描述了配置,但在其他服务器和版本中的配置也类似。您确实要调整下面的所有路径以匹配您自己的安装。
0.1。将德比课程提供给服务器' common'通过添加derby.jar,derbyclient.jar,derbynet.jar,derbytools.jar来加载类加载器。例如,将jar复制到服务器实例的JVM lib / ext中,例如进入C:\java\J2EESDK7U1\glassfish\domains\domain1\lib\ext
0.2。使用glassfish管理GUI,将以下两个属性添加到配置> server-config> JVM设置> JVM选项选项卡:
-Dderby.drda.startNetworkServer=true
和
-Dderby.system.home=C:/java/J2EESDK7U1/glassfish/databases
。第一个告诉Derby在加载嵌入式引擎时开始在网络模式下监听,第二个提供到derby数据库和可选derby.properties文件的基本路径(例如,使用PROD中的安全设置)
0.3。安排服务器在启动时加载类org.apache.derby.jdbc.EmbeddedDriver
。实现此目的的一种方法是例如使用@Startup
注释EJB,然后在EJB中定义一个@PostConstruct
带注释的方法,类似:
@PostConstruct
private void startup() {
try { Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
logger.info("Started DERBY in embedded+network mode");
} catch (ClassNotFoundException e) {
... your error handling
}
}
有关其他6项启动提示,请参阅http://blog.eisele.net/2010/12/seven-ways-to-get-things-started-java.html