servlet中使用db4o

servlet中使用db4o   在web的工程如果想使用db4o,是不能直接使用的,如果想使用的就得做一些初始化的工作,以便在servlet中使用,具体可以看下面的两个网页有详细的介绍:   http://java.dzone.com/articles/db4o-java http://community.versant.com/documentation/reference/db4o-8.1/java/re…

大家好,又见面了,我是你们的朋友全栈君。

      在web的工程如果想使用db4o,是不能直接使用的,如果想使用的就得做一些初始化的工作,以便在servlet中使用,具体可以看下面的两个网页有详细的介绍:

  http://java.dzone.com/articles/db4o-java

 http://community.versant.com/documentation/reference/db4o-8.1/java/reference/Content/platform_specific_issues/web/servlets.htm

 

  可以如此使用:

   Db4oServletContextListener.java

 

import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

import com.db4o.Db4oEmbedded;
import com.db4o.EmbeddedObjectContainer;
import com.db4o.ObjectContainer;
import com.db4o.config.EmbeddedConfiguration;

public class Db4oServletContextListener 
	implements ServletContextListener {

	public static final String PREFIX_PATH = "E:/Pattern/PDFBox-v2/";
	public static final String KEY_DB4O_FILE_NAME = "db4oFileName";
	public static final String KEY_DB4O_SERVER = "db4oServer";
	
	
	@Override
	public void contextInitialized(ServletContextEvent event) {
		System.out.println("context oK");
	    ServletContext context = event.getServletContext();
	    String filePath = PREFIX_PATH + context.getInitParameter(KEY_DB4O_FILE_NAME);
	    EmbeddedConfiguration configEmbedded = Db4oEmbedded.newConfiguration();
	    EmbeddedObjectContainer rootContainer = Db4oEmbedded.openFile(configEmbedded,
				filePath);
	    context.setAttribute(KEY_DB4O_SERVER, rootContainer);
	   /* ArrayList<exam> result = new ArrayList<exam>();
		ObjectSet<exam> objectSet = rootContainer.query(exam.class);
		while (objectSet.hasNext()) {
			result.add((exam) objectSet.next());
		}
		exam[] exams = result.toArray(new exam[result.size()]);
		System.out.println(exams.length);*/
	    context.log("db4o startup on " + filePath);
	}


	@Override
	public void contextDestroyed(ServletContextEvent event) {
	    ServletContext context = event.getServletContext();
	    ObjectContainer rootContainer = (ObjectContainer) context.getAttribute(KEY_DB4O_SERVER);
	    context.removeAttribute(KEY_DB4O_SERVER);
	    close(rootContainer);
	    context.log("db4o shutdown");
	}
	
	private void close(ObjectContainer container) {
		if(container != null) {
			container.close();
		}
	}
}

   自己的servlet代码:

 

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.db4o.EmbeddedObjectContainer;

public class CategoryServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
	
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doPost(request, response);
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		System.out.println("OK");
		EmbeddedObjectContainer container = (EmbeddedObjectContainer) 
				request.getServletContext().getAttribute("db4oServer");
	}}

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/162583.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 机器学习之特征归一化

    当数据集的数值属性具有非常大的比例差异,往往导致机器学习的算法表现不佳,当然也有极少数特例。在实际应用中,通过梯度下降法求解的模型通常需要归一化,包括线性回归、逻辑回归、支持向量机、神经网络等模型。但

    2021年12月30日
    59
  • WhatsAPP通讯协议端对端加密人工智能[通俗易懂]

    WhatsAPP通讯协议端对端加密人工智能[通俗易懂]本文是一个以whatsapp为案例的,针对端对端聊天加密通讯协议整理的一个学习笔记,仅供大家学习。Signalprotocol是真正的端到端的通讯加密协议,号称是世界上最安全的通讯协议,任何第三方包括服务器都无法查看通讯内容。全篇都是围绕着Signalprotocol进行梳理和解释,学习的内容大致分为三个大部分:1、术语解析2、了解5577850怎么来的3、WhatsAPP的通讯流程。术语解析要了解整个的加密通讯协议,首先就是要了解一些不常见的密钥交换方法和算法,可以先看第二部分,

    2022年6月7日
    50
  • linux rm 命令详解,Linux rm命令使用指南「建议收藏」

    linux rm 命令详解,Linux rm命令使用指南「建议收藏」Linux系统的众多命令中,rm命令主要用于删除文件,下面小编就来详解介绍下Linux系统的rm命令,希望对初学者有一定的帮助。名称:rm使用权限:所有使用者使用方式:rm[options]name.。。说明:删除档案及目录。参数:?-i删除前逐一询问确认。-f即使原档案属性设为唯读,亦直接删除,无需逐一确认。-r将目录及以下之档案亦逐一删除。范例:删除所有C语言程式档;删除前逐一询问确…

    2025年6月29日
    5
  • DHT11湿度传感器开发「建议收藏」

    DHT11湿度传感器开发「建议收藏」本文对在CC2540上开发DHT11湿度传感器进行裸机开发,并显示与LED屏上,如下图所示看了无数的datasheet,终于看到中文的了,感觉一下轻松很多,虽然这颗传感器科技含量也不是特别高,但精神还是为之一振,希望我朝设计出更高端的电子元器件。湿敏元件是最简单的湿度传感器。湿敏元件主要有电阻式、电容式两大类。湿敏电阻的特点是在基片上覆盖一层用感湿材料制成的膜,当空气中

    2022年9月29日
    5
  • pycharm使用anaconda的虚拟环境_pycharm解释器为空

    pycharm使用anaconda的虚拟环境_pycharm解释器为空项目场景:在pycharm中新建项目,如果需要新建python环境时的全部操作问题描述:显示所有的python解释器:condainfo-eanaconda已经安装好了,创建新的python环境:condacreate–namepython37python=3.7#创建一个名字为python37,版本是python3.7的新环境,conda会自动安装3.7的最新版本;它会把新安装的python环境放在anaconda3的envs目录下:…

    2022年8月26日
    10
  • 写出一个程序员框架_html收藏代码

    写出一个程序员框架_html收藏代码Python实战社群Java实战社群长按识别下方二维码,按需求添加扫码关注添加客服进Python社群▲扫码关注添加客服进Java社群▲作者丨cloudsky来源丨JAVA小咖秀https…

    2022年9月30日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号