设为首页 收藏本站
查看: 969|回复: 0

[经验分享] tomcat embedded + sqlite

[复制链接]

尚未签到

发表于 2016-11-29 08:20:48 | 显示全部楼层 |阅读模式
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 的例了,没测试过
另请参考:http://www.iyunv.com/topic/8820
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;
}
}

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-306894-1-1.html 上篇帖子: sqlite工具类 下篇帖子: Android SQLite基础
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表