2006年11月26日星期日

2006-11-24 星期五

今天介绍了索引和锁,索引分为唯一索引,非唯一索引,位图索引,函数索引,锁讲了半天也没弄太清楚,行级锁,表级锁,默认作insert、update、delete时行被锁定,不能由其他客户端更改,也可以设查询锁,在一个用户查询的时候别人不能修改,在select语句最后加for update,关于数据库的学习,一周过去了,大家都认为这个老师实在是不怎么样,来这里培训近三个月了,给我的感觉,这里的老师能力基本都不咋地,不知道天下培训都是这样,这样当然能为培训节省成本,但这将是个恶性循环,,培训要对老师的能力素质严格把关的。

2006-11-22 星期三

感冒好些了,因为吃了新康泰克,所以也发困了,昏沉沉的。

前面,老师在边折腾边讲那写sql语句,嗷呦,真实有些费劲,老师不觉得脸红么?

2006-11-23 星期四

一直在埋怨老师能力太次(确实很次),学习这东西,是两方面的,在老师,在学生,老师好好教,学生好好学,哈哈,废话。

但是,老师也得过得去不是,老师最重要的一个素质应该实事求是,知之为知之,不知之为不知之,哈哈,非常明显,老师在上课之前没有好好的准备,否则不会犯这种弱智的错误,垃圾,娘的,没有一个正式些的例子,瞎起名,连自己都不知道自己用过什么名了,实际工作中就是这么做的么?

2006-11-21 星期二

Today

如常

感冒的难受

好像因为提意见,老师开始改变了一些授课方式,不过好像越发不清楚,一会儿讲讲这儿一会儿讲讲那,一点也不系统不完整,唉…罢了。

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-14 星期二

今天上午Struts算是基本上讲完了,还有一些零碎的东西要自己看,老师准备剩下的三四天讲一下EJB和webLogic,这个周六周日要上课了。

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();

都没错,都能出来数据

2006年11月9日星期四

2006-11-6 星期一

今天讲完了自定义标签后,老师演示作了个网上书店的简单但五脏俱全的Struts例子,下午就没有讲课,因为老师明天出差要准备准备嘛,自己练习,几个人去书店逛了一圈,哈哈哈,因为老师说那本孙卫琴的Struts书不错,大家都跑去自己买了本回来,老师的影响力真是大阿,哈哈。

2006-11-5 星期日

一连一周没有休息,这几天有点累了,得休息休息了,可能是习惯了,每五天就休息两天,坚持,工作了比这可累多了。

2006-11-3 星期五

换老师的第二天,老师很忙,又开会又接待客人的,不过讲的相当好,让人豁然开朗,有理有序,真的是不一样啊,哈哈。今天讲了struts里的一些主要的标签,并作了例子,老师讲在web标签方面做得好的是微软的.net,深有体会,asp.net比这个方便多了,不过在这之前一点不知道他的标签的实现原理,是怎样前台和后台联系的,现在初步了解了一些,原来每个标签通过xml文件影射在后台对应一个类。这两天下来,做个两三个Struts的例子,一个页面的,三个五个页面的,没有用集成开发工具,基本都是用JCreater写的,发现必须清楚这里面的来龙去脉,必须非常仔细配置每个资源文件,有一点错误就不能正常运行。而且是让人感觉莫名其妙的错误。

2006-11-4 星期六

今天没有休息,因为老师下周要出差,接着讲Struts的知识,要想深入理解掌握成为自己的东西必须多自己敲代码多练习。

2006-11-2 星期四

今天换老师了,就是不一样啊,对Struts有了一个清晰的认识,对培训中心还不是预期的很失望,有新好老师了,好好努力学习吧,有这样的机会可不多。 Struts是一个框架,用老师的比喻就是它把一个单位办公各个部门需要的房间都盖好了,而每个部门有几个成员,怎么处理业务由我们来决定,这就方便了我们开发。

2006-11-1 星期三

晚上十二点了,第一个Struts程序弄到现在还是有一点问题,今天的课开了个Struts头儿,听得一蹋糊涂,就自己看书,明天可能换老师,要加倍努力了,好了,睡觉去。

2006-10-31 星期二

今天讲