今天介绍了索引和锁,索引分为唯一索引,非唯一索引,位图索引,函数索引,锁讲了半天也没弄太清楚,行级锁,表级锁,默认作insert、update、delete时行被锁定,不能由其他客户端更改,也可以设查询锁,在一个用户查询的时候别人不能修改,在select语句最后加for update,关于数据库的学习,一周过去了,大家都认为这个老师实在是不怎么样,来这里培训近三个月了,给我的感觉,这里的老师能力基本都不咋地,不知道天下培训都是这样,这样当然能为培训节省成本,但这将是个恶性循环,,培训要对老师的能力素质严格把关的。
2006年11月26日星期日
2006-11-23 星期四
一直在埋怨老师能力太次(确实很次),学习这东西,是两方面的,在老师,在学生,老师好好教,学生好好学,哈哈,废话。
但是,老师也得过得去不是,老师最重要的一个素质应该实事求是,知之为知之,不知之为不知之,哈哈,非常明显,老师在上课之前没有好好的准备,否则不会犯这种弱智的错误,垃圾,娘的,没有一个正式些的例子,瞎起名,连自己都不知道自己用过什么名了,实际工作中就是这么做的么?
2006-11-20 星期一
开始Oracle,安装,初识这东西,也不知道这东西跟sqlserver有啥不一样,问老师了一下,说是oracle更安全一些,没了么?郁闷!
老师说我们的日志,没有东西,每天十分钟就这么两行,哈哈,有时候真的是没有时间,有时候真的是没啥好写的,一天就是那样,要是每天都那么高涨,进步,那真的是伟大了,俺们又不是文学家,不记流水账,怎么办,还写成流传千古的文章,那也不来这学什么java语言了,我们的语言就够活了,哈哈,牢骚一下。
2006-11-19 星期日
做了个webServices的实例,服务端是纯java写的,然后用.net写的客户端调用,真是过瘾,还有很多资料要看,谢老师的资料很实用。
今天Struts课就算结束了。
但还要好好看资料。加深理解。
听谢老师的课感觉就是不一样,一个问题是怎样出现的,是怎样思考的,是怎样想办法解决的,而又会有什么问题……,不是给我鱼,是让你知道怎样钓鱼的。
老师跟老师是不一样的阿,哈哈,有些老师在来上课以前没有好好的思考这么课该怎么讲更好,只是懒惰的找一些现成的讲义,幻灯片,删删改改就成自己的了,然后就来课堂上拿来念。呜呼
2006-11-18 星期六
刚刚自己手工写了个简单的HelloWorld级别的ejb,
感觉:1、一定要仔细,就是仅仅差一个字母,就错,一定要仔细,用老师的话说,心要静
2、还是因为马虎,把实现bean中的ejbCreate()方法给忘写了
3、ejbCreate()方法必须抛出RemoteException异常,否则报错
4、home接口中的create()方法必须抛出RemoteException、CreateException两个异常,否则报错
5、remote接口的方法也要抛出RemoteException异常
哈哈,看到ejbc successful.真是高兴。
另外对于命令java weblogic.ejbc,好像是weblogic的命令,不知道它做了些什么
明天,最后一天谢老师的课,要讲web serveices,真是来劲
2006-11-17 星期五
Today讲了很多内容,真是要好好的来消化一番,从最基本到利用工具开发远程方法调用RMI讲了个清清楚楚,接下来要消化了。
自己写一个远程方法调用
需要有一个远程方法的接口,在客户端和服务器端都要有,然后在服务器端实现这个接口,然后在webLogic中部署,需要有这么一命令行
build.cmd
------------------------------------------------------------
set SERVER_CLASSES=c:\serverclasses
javac -d %SERVER_CLASSES% IHello.java HelloDemo.java
java weblogic.rmic -d %SERVER_CLASSES% demo.HelloWorld.HelloDemo
------------------------------------------------------------
然后在weblogic配置页面,启动和关闭页面添加要加载的类
其中在main方法里实现了向jndi添加Hello对象
测试代码D:\刘朝春\test\firstrmi
另外,在weblogic中配置数据库驱动(不用它自带的驱动),目前就知道这一个方法,不知道还有没有更好的
我们可以在C盘根目录下建立一个文件夹:JDBCSQLSERVER2000。把这三个文件拷贝过去。
在目录C:\bea\user_projects\domains\mydomain下找到文件startWebLogic.cmd,这是WebLogic启动的时候第一个执行的文件,把它打开。
第一行加上:
set CLASSPATH=.;c:\JDBCSQLSERVER2000\msbase.jar;c:\JDBCSQLSERVER2000\msutil.jar;c:\JDBCSQLSERVER2000\mssqlserver.jar
以设置CLASSPATH路径。
路径C:\bea\weblogic81\server\bin下的文件setWLSEnv.cmd是工作窗口设置classpath用的,也需要在第一行把上面的语句加上去。
完整的:
set CLASSPATH=.;C:\bea\weblogic81\server\lib\*;C:\bea\jdk141_03\*
set CLASSPATH=%CLASSPATH%.;C:\serverclasses
set CLASSPATH=%CLASSPATH%.;c:\JDBCSQLSERVER2000\msbase.jar;c:\JDBCSQLSERVER2000\msutil.jar;c:\JDBCSQLSERVER2000\mssqlserver.jar
我只在startWebLogic.cmd下设置了Classpath就在管理界面配成功了,不知道在setWLSEnv.cmd有什么用?
发现webLogic好像不读系统变量?
2006-11-16 星期四
企业级javaBean,熟悉weblogic,远程方法调用,jdbc数据源
远程方法调用要用到jndi,远程方法调用在tomcat里不能实现,客户端需要有一个远程方法的接口,服务器端将远程方法在服务器的jndi上注册。最后客户端通过jndi查找强制转换成接口名实现远程方法调用。
2006-11-15 星期三
企业级JavaBean,远程方法调用,在weblogic中配置连接池,配置数据源,操作数据库,一天天过的真快,时间不够用了,不知怎么搞得还有点感冒,难受,有点不支了。
该怎样……
多有深意,呵呵……
2006年11月25日星期六
2006-11-14 星期二
第八,在配置连接池的时候,如果测试不通,而且没有任何异常,请检查数据源xml的配置,特别是文件名的后缀名问题,比如写成了book.xml.text
今天讲了讲Sruts配置文件,可以有多个struts-config.xml,在web.xml中设置,还有就是可以设置一个虚拟ActionForm,以解决大量页面将产生大量的ActionForm,另外解决这个问题的方法就是在jsp页面中设置一个隐藏标签,以在ActionForm中区分是哪个jsp页面的事件。
虚拟ActionForm,就是用DynaActionForm类,在struts-config.xml中配置ActionForm属性,….
2006-11-13 星期一
今天老师还没回来
做老师的网上书店的例子
发现几个问题,想记录一下,以后引以为戒。
一是,在Struts-config.xml中
映射ActionForm
须这样写
<form-beans>
<form-bean name="booklistform" type="bookshop.form.BookListForm"/>
<form-bean name="shoppingform" type="bookshop.form.ShoppingForm"/>
</form-beans>
这样写是不正确的
<form-beans>
<form-bean name="shoppingform" type="bookshop.form.ShoppingForm"/>
</form-beans>
<form-beans>
<form-bean name="booklistform" type="bookshop.form.BookListForm"/>
</form-beans>
二是,ActionForm中的属性必须和jsp页中的标签一一对应,否则会出错。
三是,在标签中一定注意格式,属性值的双引号不能缺。
四是,request. getAttribute()和request. getParameter()的区别
五是,不能在自定义Tag里或在Servlet里输出Struts标签
六是,HashMap中得到所有的键值
//HashMap book = (HashMap)(super.pageContext.getSession().getAttribute("shpping"));
Object[] strid = (book.keySet().toArray());
七是,在jsp页面中使用userbean不需在web.xml中映射,直接
<jsp:userBean id=”” class=””></jsp:userBean>
Servelt要在web.xml中映射
在Struts中,ActionForm和Action都要在Struts-config.xml中映射
八是,脑袋不转了,睡觉去,再整理。
2006-11-10 星期五
这几天一直在休息,老师出差了,昨天研究了在tomcat下配置jndi,发现在tomcat5.0和5.5下配置还有些不一样,老师是使用得5.0,按照老师那样配在5.5下就是不行,把下面这段xml放在tomcat的server.xml中的<Host></Host>标签里面
<Context path="/book" docBase="d:/bookdemodata" debug="0" reloadable="true">
<Resource name="jdbc/book" auth="Container" type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/book">
<parameter>
<name>factory</name>
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value>
</parameter>
<parameter>
<name>url</name>
<value>jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=book</value>
</parameter>
<parameter>
<name>username</name>
<value>sa</value>
</parameter>
<parameter>
<name>password</name>
<value></value>
</parameter>
<parameter>
<name>maxActive</name>
<value>20</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>10</value>
</parameter>
<parameter>
<name>maxWait</name>
<value>-1</value>
</parameter>
<parameter>
<name>removeAbandoned</name>
<!-- Abandoned DB connections are removed and recycled -->
<value>true</value>
</parameter>
<parameter>
<name>removeAbandonedTimeout</name>
<!-- Use the removeAbandonedTimeout parameter to set the number of seconds a DB connection has been idle before it is considered abandoned. -->
<value>60</value>
</parameter>
<parameter>
<name>logAbandoned</name>
<!-- Log a stack trace of the code which abandoned -->
<value>false</value>
</parameter>
</ResourceParams>
</Context>
如果是在5.0下就没有问题,测试通过,而在5.5下面这样写就有错误了,到网上搜了些资料,说它们两个配置还是有些不一样的
在tomcat5.5下conf\Catalina\localhost目录下新建一个针对自己项目的xml文件
<?xml version="1.0" encoding="UTF-8"?>
<Context path="/addressbook" docBase="/addressbook" debug="0" reloadable="true">
<Resource
auth="Container"
name="jdbc/address"
type="javax.sql.DataSource"
password=""
driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver"
maxIdle="10"
maxWait="100000"
username="sa"
url="jdbc:microsoft:sqlserver://localhost:1433;databasename=addressbooksample"
maxActive="20"/>
</Context>
文件名叫addressbook.xml这里的文件名是随便起的,在tomcat启动的时候会自动加载这个目录下的所有xml文件,OK 这样就调试通过了,而且看起来这样配置要比在5.0下配置简单。
还有一个方法
就是把sql的配置资源
<Resource
auth="Container"
name="jdbc/address"
type="javax.sql.DataSource"
password=""
driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver"
maxIdle="10"
maxWait="100000"
username="sa"
url="jdbc:microsoft:sqlserver://localhost:1433;databasename=addressbooksample"
maxActive="20"/>
放入conf文件夹下的Context.xml中的<Context></Context>标签内,就可以了
再有就是在java代码中取得Connection的时候就不能像原来这样写了
Context initContext = new InitialContext();
Context envContext = (Context)initContext.lookup("java:comp/env");
DataSource ds = (DataSource)envContext.lookup("jdbc/addressbook");
conn = ds.getConnection();
这样写我试过也不行,tomcat会有异常
这样写就没错
Context initContext = new InitialContext();
DataSource ds = (DataSource)initContext.lookup("java:comp/env/jdbc/address");
conn = ds.getConnection();
经过一番研究试验,终于搞定了,但是其中玄机还不知是为何
像这个东西"java:comp/env"是啥意思(JNDI查找的Tomcat的默认名字)
Oh.god,我弄错了
Context initContext = new InitialContext();
Context envContext = (Context)initContext.lookup("java:comp/env");
DataSource ds = (DataSource)envContext.lookup("jdbc/address");
conn = ds.getConnection();
和这样写
Context initContext = new InitialContext();
DataSource ds = (DataSource)initContext.lookup("java:comp/env/jdbc/address");
conn = ds.getConnection();
都没错,都能出来数据