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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 对java中bean的理解

    对java中bean的理解简单笼统的说就是一个类,一个可复用的类。javaBean在MVC设计模型中是model,又称模型层,在一般的程序中,我们称它为数据层,就是用来设置数据的属性和一些行为,然后我会提供获取属性和设置属性的get/set方法JavaBean是一种JAVA语言写成的可重用组件。为写成JavaBean,类必须是具体的和公共的,并且具有无参数的构造器。JavaBean通过提供符合一致性设计模式的公共方法将

    2022年7月8日
  • java 获取_java中的html如何获取

    java 获取_java中的html如何获取packagecn.wideth.util;importjava.util.UUID;publicclassMain{/***UUID,通用唯一识别码,是由一组32位数的16进制数字所构成,*可以产生一个号称全球唯一的ID,可以用来命名文件、*变量以及数据库的ID主键等属于唯一的元素。*Java来获取UUID*@paramargs*/publicstaticvoidmain(St

    2022年8月9日
  • redis设置过期时间后再set还用设置时间吗_redis setnx 过期时间

    redis设置过期时间后再set还用设置时间吗_redis setnx 过期时间​​​​​​​java操作Redis缓存设置z过期时间转载:java操作Redis缓存设置过期时间-liuminchao-博客园关于Redis的概念和应用本文就不再详解了,说一下怎么在java应用中设置过期时间。在应用中我们会需要使用redis设置过期时间,比如单点登录中我们需要随机生成一个token作为key,将用户的信息转为json串作为value保存在redis中,通常做法是://生成tokenStringtoken=UUID.randomUUID().t..

    2022年9月26日
  • java安装(找不到jre还苦恼的同志们)「建议收藏」

    java安装(找不到jre还苦恼的同志们)「建议收藏」玩java当然需要装java了,可是我的jre哪去了?懵逼的朋友请看下文。安装地址:(https://www.oracle.com/technetwork/java/javase/downloads/index.html)安装步骤:进入上面那个网址下载一个适合你操作系统的java,安装时,按照步骤一步一步向下走就OK了。(如果你下载的Java安装后,你能找到你的jre,就不要看下面的文章了,…

    2022年7月15日
  • C语言冒泡排序和选择排序_选择排序和冒泡排序哪个快

    C语言冒泡排序和选择排序_选择排序和冒泡排序哪个快实例1 冒泡法排序数组中有N个整数,用冒泡法将它们从小到大(或从大到小)排序。实例解析:排序是非常重要且很常用的一种操作,有冒泡排序、选择排序、插入排序、希尔排序、快速排序、堆排序等多种方法。这里我们先简单介绍前三种排序算法和代码的实现,其余算法将在后续课程《数据结构》中学习到。冒泡法排序是C语言教材中已经介绍过的排序方法,与其他排序方法比较起来,冒泡法效率是最低的,但因其算法

    2022年10月18日
  • 汇编语言资料_汇编语言基础知识

    汇编语言资料_汇编语言基础知识
    常见的基本汇编书籍 
    Windows.环境下32位汇编语言程序设计(第2版) 
    http://www.happycampus.cn/docs/957100583237@hc10/27
    5980/ 
    汇编语言编程艺术 
    Intel汇编语言程序设计(第四版) 
    Intel汇编语言程序设计(第五版)范例 
    http://download.csdn.net/source/1523425 
    80×86汇编语言程序

    2022年10月13日

发表回复

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

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