weblogic8.1下EJB的部署与数据库的配置
weblogic 8.1下数据库连接池的配置
weblogic 8.1下面数据库连接池的配置和tomcat、resin等都有比较大的不同,看来bea也越来越有M$的做派,喜欢自立标准。没办法,谁让他是java app server的老大。恨.....
以MS SQLServer 2k为例。打开console:http://localhost:7001/console/,登陆进去,选择jdbc下面的Connection Pool。然后Configure a new JDBC Connection Pool...
驱动程序可以选择M$的type4,也就是通常使用的M$ 4 jdbc的驱动,这样可以让程序更容易移植。假设命名为webcp,要访问的数据库是webcp:
screen.width/2)this.width=screen.width/2" vspace=2 border=0>
测试连接没有问题之后就可以部署到服务器上,一般是部署到myserver上。
然后进入jdbc下面的Data Sources,Configure a new JDBC Data Source,其中JNDI Name是你查询连接池时候使用的JNDI命名,也把它设为webcp:
screen.width/2)this.width=screen.width/2" vspace=2 border=0>
然后在下一页中选择要使用的连接池,也就是我们刚才配置的webcp。然后也把它部署到myserver上。搞掂。
试一下:
Context ctx=new InitialContext();
Object obj=ctx.lookup("webcp");
DataSource ds=(DataSource)obj;
Connection conn=ds.getConnection();
有一点需要注意,SQLServer 2k中sa默认访问的数据库是maters,这有可能会造成问题。这很好解决,可以修改连接池的配置,也可以另外建立新的数据库帐号。
下面是config.xml中的配置代码:
Name="webcp" Password="{3DES}fcqinoiw5ZI="
Properties="user=sa;url=jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=webcp;selectMethod=cursor;dataSourceName=SQL2000JDBC;userName=sa;databaseName=webcp;serverName=localhost"
Targets="myserver"
TestTableName="SQL SELECT COUNT(*) FROM sysobjects" URL="jdbc:microsoft:sqlserver://localhost:1433"/>
weblogic8.1下EJB的部署与调用
EJB编写不容易,部署起来也不简单啊,不同的平台不同的容器不同的部署工具,头都整昏了。weblogic这东西牛,值得研究,拿它开刀。
编写过程不说,只说部署与调用,下面这三段代码已经很能说明问题。
1、ejb-jar.xml
< ?xml version="1.0" encoding="UTF-8"? >
< !DOCTYPE ejb-jar PUBLIC -//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN " target=_blank >http://java.sun.com/dtd/ejb-jar_2_0.dtd >
< !-- Generated XML! -- >
< ejb-jar >
< display-name >hello< /display-name >
< enterprise-beans >
< session >
< display-name >HelloBean< /display-name >
< ejb-name >Hello< /ejb-name >
< home >org.bromon.ejb.session.HelloHome< /home >
< remote >org.bromon.ejb.session.Hello< /remote >
< local-home >org.bromon.ejb.session.HelloLocalHome< /local-home >
< local >org.bromon.ejb.session.HelloLocal< /local >
< ejb-class >org.bromon.ejb.session.HelloBean< /ejb-class >
< session-type >Stateless< /session-type >
< transaction-type >Bean< /transaction-type >
< security-identity >
< use-caller-identity/ >
< /security-identity >
< /session >
< /enterprise-beans >
< /ejb-jar >
2、weblogic-ejb-jar.xml(weblogic专署配置文件)
< !DOCTYPE weblogic-ejb-jar PUBLIC -//BEA Systems, Inc.//DTD WebLogic 8.1.0 EJB//EN " target=_blank >http://www.bea.com/servers/wls810/dtd/weblogic-ejb-jar.dtd >
< !-- Generated XML! -- >
< weblogic-ejb-jar >
< weblogic-enterprise-bean >
< ejb-name >Hello< /ejb-name >
< stateless-session-descriptor >
< pool >
< /pool >
< stateless-clustering >
< /stateless-clustering >
< /stateless-session-descriptor >
< transaction-descriptor >
< /transaction-descriptor >
< jndi-name >Hello< /jndi-name >
< local-jndi-name >HelloLocal< /local-jndi-name >
< /weblogic-enterprise-bean >
< /weblogic-ejb-jar >
3、HelloClient.java(客户端代码,最好和四个接口一起打包)
/*
* Created on 2004-5-11
*/
package org.bromon.ejb.session;
import javax.naming.*;
import javax.rmi.*;
import java.util.*;
/**
* @author Bromon
*/
public class HelloClient
{
public static void main(String args[])
{
try
{
Properties prop=new Properties();
prop.put(Context.INITIAL_CONTEXT_FACTORY,"weblogic.jndi.WLInitialContextFactory");//加载weblogic上下文环境
prop.put(Context.PROVIDER_URL,"t3://localhost:7001");//weblogic专用协议
Context ctx=new InitialContext(prop);
Object obj=ctx.lookup("Hello");
HelloHome home=(HelloHome)PortableRemoteObject.narrow(obj,HelloHome.class);
Hello hello=home.create();
System.out.println(hello.say());
hello.remove();
}catch(Exception e)
{
System.out.println(e);
}
}
}