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


相关推荐

  • vue 使用数组splice方法失效,且总是删除最后一项的解决办法。[通俗易懂]

    vue 使用数组splice方法失效,且总是删除最后一项的解决办法。[通俗易懂]今天在写项目的时候,遇到一个很简单的需求,下图,点击添加标签,左边出现一个可以输入的标签,点击删除按钮,就能删除当前标签,很简单的需求,我却搞了一个多小时(哎…新手愚笨啊)一看到这个我的思路就是点击添加标签,把新增的节点push到自己定义的数组里,然后渲染出来,点击删除按钮,用splice方法从数组中删除掉当前的节点(很简单,很明确的思路嘛,但是却事与愿违) <div…

    2022年9月24日
    2
  • 在HTML中的下拉框中怎样实现超连接?

    在HTML中的下拉框中怎样实现超连接?

    2021年10月20日
    56
  • Java中的substring截取字符串方法「建议收藏」

    Java中的substring截取字符串方法「建议收藏」1.在处理字符串的过程中有很多情况下会遇到需要截取字符串的情况,这个时候使用Java中提供的substring方法来截取就非常方便了2.其中比较经常使用到的方法有两个:①publicStringsubstring(intbeginIndex)这个方法截取的字符串是从索引beginIndex开始的,到整个字符串的末尾,例如:字符串Strings=”abcdef”;调…

    2022年5月24日
    43
  • linux安装busybox教程

    linux安装busybox教程获取软件包下载busybox安装包1.31.0当前最新稳定版本,并解压:wgethttps://qqq-1253133144.cos.ap-chengdu.myqcloud.com/bbb/busybox-1.31.0.tar.bz2tar-xjvfbusybox-1.31.0.tar.bz2编译环境配置l编译和安装busybox:cdbusybox-1.31.0/makedefconfig&&makeinstallbusyb.

    2022年7月15日
    23
  • mac redis客户端_redis关闭服务器命令

    mac redis客户端_redis关闭服务器命令我选择的是直接使用Mac的Homebrew工具安装redis,可以节省很多配置的时间。1.安装命令brewinstallredis2.使用配置文件启动redis$redis-server或brewservicesstartredis3.连接远程服务器的数据库$redis-cli-hhost-pport-apassword//eg:$redis-cli-h192.168.11.225-p6379-a“password”//eg:$redis-cli

    2022年9月2日
    5
  • Git clone远程仓库

    Git clone远程仓库

    2021年10月29日
    39

发表回复

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

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