tomcat embedded + sqlite

tomcat5 embed 直接解压就可以用了,5.0.x 用jdk1.4,5.5.x用jkd1.5,不过启动要靠java 程序(它实际上是一些 jar 包),也就是你可以把它导入web项目里,这个web项目就包含了服务器,启动时设置项目的路径就可以了


sqlite 文件很小,就一个(几百K),也需要手动或程序启动


启动tomcat embed 的类如下:



import org.apache.catalina.Context;
import org.apache.catalina.Engine;
import org.apache.catalina.Host;
import org.apache.catalina.LifecycleException;
import org.apache.catalina.connector.Connector;
import org.apache.catalina.startup.Embedded;

public class Run {

private static Embedded tomcat = null;
public static void main(String[] args) {
// TODO Auto-generated method stub
initEmbedded();
initShutdownHook();
startTomcat();
}

private static void startTomcat(){
try {
tomcat.start();
} catch (LifecycleException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private static void initShutdownHook(){
Runtime.getRuntime().addShutdownHook(new Thread(){
public void run(){
try {
tomcat.stop();
} catch (LifecycleException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
}
private static void initEmbedded() {
tomcat = new Embedded();
tomcat.setCatalinaHome("D:\\apache-tomcat-5.5.28-embed"); //tomcat embed 路径

Engine engine = tomcat.createEngine();
engine.setName("MyEngine");

Host host = tomcat.createHost("localhost", "D:\\apache-tomcat-5.5.28-embed\\webapps"); // web站点根目录
Context myContext = tomcat.createContext("/test", "E:\\newworkspace\\Fbote"); //工程目录(要编译好的,我是用eclipse编译好的)

host.addChild(myContext);
engine.addChild(host);
engine.setDefaultHost("localhost");
tomcat.addEngine(engine);
Connector connector = tomcat.createConnector("localhost", 8080, false); //端口
tomcat.addConnector(connector);
}

}



sqlite 使用很简单,(测试时在windows)下测试:

解压 -> cmd -> cd 所在目录:

sqlite3.exe Mydb.db
create table user(id integer primary key,name varchar(222));
insert into user(1,'elmer');
.schema

(此时就建好了Mydb 数据库和 user 表,并添加了一条数据)

select * from user

就会出现

1|elmer



jsp 连接时用:
<%@ page contentType="text/html; charset=utf-8" pageEncoding="utf-8" language="java" import="java.sql.*"%>
<%
request.setCharacterEncoding("utf-8");
String body = request.getParameter("body");

try {
Class.forName("org.sqlite.JDBC");
Connection conn = DriverManager.getConnection("jdbc:sqlite:/d:/test.db");
Statement stmt = conn.createStatement(ResultSet.TYPE_FORWARD_ONLY,ResultSet.CONCUR_READ_ONLY);

String sql = "INSERT INTO ttable(id, name) VALUES('1', '" + body + "')";
stmt.executeUpdate(sql);

stmt.close();
conn.close();
} catch(Exception e) {
out.println(e.getMessage());
return;
}
%>


如果是用连接池可以在struts-config.xml中陪置如下:
<data-sources>
<data-source key="org.apache.struts.action.DATA_SOURCE"
type="org.apache.commons.dbcp.BasicDataSource">
<set-property property="autoCommit" value="true" />
<set-property property="description" value="sqlite Data Source" />
<set-property property="driverClassName" value="org.sqlite.JDBC" />
<set-property property="maxCount" value="100" />
<set-property property="minCount" value="20" />
<set-property property="maxWait" value="1000" />
<set-property property="url"
value="jdbc:sqlite:/D:/sqlite/fbote.db" />
</data-source>
</data-sources>



上面为测试通过的,下面是其他一些关于 tomcat embed 的例了,没测试过

另请参考:[url]http://www.iteye.com/topic/8820[/url]

private Embedded createTomcat(String path);  
{
Embedded tomcat = new Embedded();;

tomcat.setCatalinaHome(path);;

Engine engine = tomcat.createEngine();;
engine.setName("EspServer");;

Host host = tomcat.createHost("localhost", tomcat.getCatalinaHome(); + "/webapps");;

engine.addChild(host);;
engine.setDefaultHost(host.getName(););;

Context ctxtRoot = tomcat.createContext("", host.getAppBase(); + "/ROOT");;
ctxtRoot.setPrivileged(true);;

host.addChild(ctxtRoot);;

String espPath = ConfigManager.getProperty("ESP_ROOTDIR");;

if(espPath == null || !new File(espPath);.exists(););
{
espPath = host.getAppBase(); + "/esp";

if(!new File(espPath);.exists(););
{
System.err.println("You should set ESP_ROOTDIR in esp.config.");;

return null;
}
}

Context ctxtEsp = tomcat.createContext("/esp", espPath);;

host.addChild(ctxtEsp);;

tomcat.addEngine(engine);;
tomcat.setDebug(Logger.WARNING);;

try
{
tomcat.addConnector(tomcat.createConnector(
InetAddress.getByName("127.0.0.1");, 8080, false););;
}
catch (UnknownHostException e);
{
System.err.println("Bind tomcat server to 127.0.0.1:8080 failed.");;

e.printStackTrace();;

tomcat = null;
}

return tomcat;
}



import java.net.InetAddress;  

import org.apache.catalina.Context;
import org.apache.catalina.Engine;
import org.apache.catalina.Host;
import org.apache.catalina.connector.Connector;
import org.apache.catalina.deploy.ContextResource;
import org.apache.catalina.deploy.NamingResources;
import org.apache.catalina.startup.Embedded;

public class EmbededTomcat {

public static void main(String[] args) throws Exception {
Embedded embedded = new Embedded();
Engine engine = embedded.createEngine();
engine.setDefaultHost("localhost");
Host host = embedded.createHost("localhost", "");
engine.addChild(host);
// Create the ROOT context
Context context = embedded
.createContext("/test", "D:\\workspace\\mypro\\webapp");
/*数据源配置
NamingResources name = new NamingResources();
ContextResource resource = new ContextResource();
resource.setName("jdbc/jfw");
resource.setAuth("Container");
resource.setType("javax.sql.DataSource");
resource.setProperty("factory",
"org.apache.commons.dbcp.BasicDataSourceFactory");
resource.setProperty("maxActive", "20");
resource.setProperty("maxIdle", "10");
resource.setProperty("maxWait", "100000");
resource.setProperty("username", "epms");
resource.setProperty("password", "nci");
resource.setProperty("driverClassName",
"oracle.jdbc.driver.OracleDriver");
resource.setProperty("url",
"jdbc:oracle:thin:@10.147.218.162:1521:pmis2");
// resource.setProperty("url",
// "jdbc:oracle:thin:@192.168.131.100:1521:epms");

name.addResource(resource);
// System.out.println(resource.getName());
// System.out.println(resource.getAuth());
// System.out.println(resource.getType());
// System.out.println(resource.getProperty("url"));
context.setNamingResources(name);
*/
host.addChild(context);
embedded.addEngine(engine);
Connector connector = embedded.createConnector((InetAddress) null,
8080, false);
embedded.addConnector(connector);
embedded.start();
}

}

package com.javayou.tomcat.embed;
import java.io.File;
import java.net.InetAddress;
import java.net.UnknownHostException;
import org.apache.catalina.Context;
import org.apache.catalina.Engine;
import org.apache.catalina.Host;
import org.apache.catalina.Logger;
import org.apache.catalina.startup.Embedded;
/**
* @author Liang.xf 2004-12-19
* 嵌入式Tomcat使用样例
* www.javayou.com
*/
public class TomcatService {
public static void main(String[] args) {
//设置Tomcat的工作目录,并启动Tomcat Server
String path = "e:\\tomcat-embed";
Embedded tc = createTomcat(path);
try {
tc.start();
System.out.println("---------- Tomcat Server start over. ------------");
} catch (Exception e) {
e.printStackTrace();
}
}

private static Embedded createTomcat(String path) {
//创建嵌入式Tomcat Server的实例
Embedded tomcat = new Embedded();
//设置Tomcat的工作目录
tomcat.setCatalinaHome(path);
//产生Tomcat引擎
Engine engine = tomcat.createEngine();
engine.setName("JavayouServer");
//创建Host,设置Host的工作目录
Host host = tomcat.createHost("localhost", tomcat.getCatalinaHome()
+ "/webapps");
//把Host加入Engine
engine.addChild(host);
engine.setDefaultHost(host.getName());

String javayouPath = host.getAppBase() + "/javayou";
if (!new File(javayouPath).exists()) {
System.err.println("请检查Javayou应用的目录以及相关资源是否存在.");
return null;
}
//创建Javayou的Context,并加入Host中
Context ctxtJavayou = tomcat.createContext("/javayou", javayouPath);
host.addChild(ctxtJavayou);

tomcat.addEngine(engine);
tomcat.setDebug(Logger.WARNING);
try {
//Tomcat加入Connector,监听本地(127.0.0.1)的访问
tomcat.addConnector(tomcat.createConnector(InetAddress
.getByName("127.0.0.1"), 8080, false));
} catch (UnknownHostException e) {
System.err.println("绑定Tomcat Server到127.0.0.1:8080失败,
请检查端口是否被占用.");
e.printStackTrace();
tomcat = null;
}
return tomcat;
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值