2007年6月13日

在进行项目开发时,遇到一些ORACLE的问题,现在提供一些解决方法,希望能给大家一点帮助
1.问题描述: 当对某个表的数据进行插入或更新等DML命令操作时,数据库出现如下异常信息:
  ORA-12096: error in materialized view log on "DB_XTWH"."T_XT_DBUSERPOOLBPOL"
  ORA-00942: table or view does not exist
    解决方法:出现这个问题的原因是物化视图日志出了问题,只要删除该物化视图日志就解决问题,删除命令为:
  drop materialized view log on 用户名.表名;
  drop materialized view log on DB_XTWH.T_XT_DBUSERPOOLBPOL;
2.问题描述:当通过DBLINK操作其中的一张表时,总是提示ORA-02085:database link SKSKJ connects to SKSKJ.US.ORACLE.COM错误信息,而名为SKSKJ的DBLINK配置是正确的。
    解决方法:把数据库的参数global_names设置为FALSE就解决问题了。
posted @ 2007-10-14 15:38 汤汤 阅读(347) | 评论 (0)编辑 收藏
 
[1]好好规划自己的路,不要跟着感觉走!根据个人的理想决策安排,绝大部分人并不指望成为什么院士或教授,而是希望活得滋润一些,爽一些。那么,就需要慎重安排自己的轨迹。从哪个行业入手,逐渐对该行业深入了解,不要频繁跳槽,特别是不要为了一点工资而转移阵地,从长远看,这点钱根本不算什么,当你对一个行业有那么几年的体会,以后钱根本不是问题。频繁地动荡不是上策,最后你对哪个行业都没有摸透,永远是新手!   
[2]可以做技术,切不可沉湎于技术。千万不可一门心思钻研技术!给自己很大压力,如果你的心思全部放在这上面,那么注定你将成为孔乙己一类的人物!适可而止为之,因为技术只不过是你今后前途的支柱之一,而且还不是最大的支柱,除非你只愿意到老还是个工程师!   
[3]不要去做技术高手,只去做综合素质高手!在企业里混,我们时常瞧不起某人,说他“什么都不懂,凭啥拿那么多钱,凭啥升官!”这是普遍的典型的工程师的迂腐之言。人家能上去必然有他的本事,而且是你没有的本事。你想想,老板搞经营那么多年,难道见识不如你这个新兵?人家或许善于管理,善于领会老板意图,善于部门协调等等。因此务必培养自己多方面的能力,包括管理,亲和力,察言观色能力,攻关能力等,要成为综合素质的高手,则前途无量,否则只能躲在角落看示波器!技术以外的技能才是更重要的本事!!从古到今,美国日本,一律如此!   
[4]多交社会三教九流的朋友!不要只和工程师交往,认为有共同语言,其实更重要的是和其他类人物交往,如果你希望有朝一日当老板或高层管理,那么你整日面对的就是这些人。了解他们的经历,思维习惯,爱好,学习他们处理问题的模式,了解社会各个角落的现象和问题,这是以后发展的巨大的本钱,没有这些以后就会笨手笨脚,跌跌撞撞,遇到重重困难,交不少学费,成功的概率大大降低!
[5]知识涉猎不一定专,但一定要广!多看看其他方面的书,金融,财会,进出口,税务,法律等等,为以后做一些积累,以后的用处会更大!会少交许多学费!!   
[6]抓住时机向技术管理或市场销售方面的转变!要想有前途就不能一直搞开发,适当时候要转变为管理或销售,前途会更大,以前搞技术也没有白搞,以后还用得着。搞管理可以培养自己的领导能力,搞销售可以培养自己的市场概念和思维,同时为自己以后发展积累庞大的人脉!应该说这才是前途的真正支柱!!!   
[7]逐渐克服自己的心里弱点和性格缺陷!多疑,敏感,天真(贬义,并不可爱),犹豫不决,胆怯,多虑,脸皮太薄,心不够黑,教条式思维。。。这些工程师普遍存在的性格弱点必须改变!很难吗?只在床上想一想当然不可能,去帮朋友守一个月地摊,包准有效果,去实践,而不要只想!不克服这些缺点,一切不可能,甚至连项目经理都当不好--尽管你可能技术不错!   
[8]工作的同时要为以后做准备!建立自己的工作环境!及早为自己配置一个工作环境,装备电脑,示波器(可以买个二手的),仿真器,编程器等,业余可以接点活,一方面接触市场,培养市场感觉,同时也积累资金,更重要的是准备自己的产品,咱搞技术的没有钱,只有技术,技术的代表不是学历和证书,而是产品,拿出象样的产品,就可技术转让或与人合作搞企业!先把东西准备好,等待机会,否则,有了机会也抓不住!   
[9]要学会善于推销自己!不仅要能干,还要能说,能写,善于利用一切机会推销自己,树立自己的品牌形象,很必要!要创造条件让别人了解自己,不然老板怎么知道你能干?外面的投资人怎么相信你?提早把自己推销出去,机会自然会来找你!搞个个人主页是个好注意!!特别是培养自己在行业的名气,有了名气,高薪机会自不在话下,更重要的是有合作的机会...   
[10]该出手时便出手!永远不可能有100%把握!!!条件差不多就要大胆去干,去闯出自己的事业,不要犹豫,不要彷徨,干了不一定成功,但至少为下一次冲击积累了经验,不干永远没出息,而且要干成必然要经历失败。不经历风雨,怎么见彩虹,没有人能随随便便成功!
posted @ 2007-08-10 22:26 汤汤 阅读(247) | 评论 (0)编辑 收藏
 

现有项目组用SUN JDK1.5中自带的示例:jnlp-servlet作为WEBSTART版本管理的SERVLET。它可以很好的实现JNLP相关资源(JAR,图片等)的基于版本的管理和增量更新。并有几个类似 $ $codebase, $ $name的可替换关键字。(原来写了一个简单的servlet,可以实现软编码,但没法提供灵活的版本控制)

但现有项目的需求更高一些,即,JNLP中需要传更多的参数,比如,服务端IP,端口,上下文,用户登录的SESSIONID等,由于jnlp-servlet有源代码,我们很快修改了JnlpFileHandler和specializeJnlpTemplate方法,并加入了这几个自定义关键字( $ $host, $ $port, $ $newcontext, $ $sessionid)。JNLP如下所示:

<?xml version="1.0" encoding="utf-8"?>

<jnlp spec="1.0 " codebase=" $ $codebase" href=” $ $name”>

<information>

<title>My System</title>

<vendor>CFR</vendor>

<icon href="indexbannerleft.jpg" kind="splash" />

<homepage href="index.html"/>

<description>My System</description>

<description kind="short">CFR Inc..</description>

</information>

<security><all-permissions/></security>

<resources>

<j2se version="1.4" initial-heap-size="32m"/>

<jar href="myapp.jar" version="1.1"/>

<nativelib href="swt-lib.jar" version="1.1"/>

</resources>

<resources os="Windows"><jar href="swt.jar" version="1.1"/></resources>

<resources os="Windows"><jar href="jface.jar" version="1.0"/></resources>

<resources os="Windows"><jar href="osgi.jar" version="1.0"/></resources>

<resources os="Windows"><jar href="runtime.jar" version="1.0"/></resources>

<application-desc main-class="com.cfr.app.main">

<argument> $ $session</argument>

<argument> $ $host</argument>

<argument> $ $port</argument>

<argument> $ $newcontext</argument>

<argument>0</argument>

<argument>aa</argument>

</application-desc>

</jnlp>

其中,SESSIONID是用其内部的request得到。

一切好象即简单和明了,工作正常,但很快就发现了严重的问题。

首先说说该应用的使用模式如下:

1、 用户从网页登录系统,然后在里面点击:http://host:port/myapp/swt/index.jnlp链接。

2、 启动应用(因为应用是跟当前登录SESSION直接相关的)

按照设计本意,此时,用户的应用应通过JNLP中的参数得到了该用户登录后的SESSIONID才对,但事实并非如此。这种情况只出现在WEBSTART第一次下载的时候,以后当用户重新打开浏览器登录后(此时当然是一个新的SESSION),在页面中启动WEBSTART后,发现,该SESSIONID还是以前的,并没有想象中的将新SESSIONID传了进来。

后来还是看看JnlpFileHandler中的源代码,发现主要在getJnlpFile(客户端是JRE1.5以下时调用)和getJnlpFileEx(客户端是JDK1.5以上时用)进行了相关实现。原来,它每生成一个JNLP,就将其缓存在HASHMAP中,下一次请求,如果请求的URL相关并且文件的timestamp(就是Web服务器中的jnlp文件的修改时间,可想而知,除了升级,这个文件一般不会变)一样,就从缓存中取,这样一来,我们也可以推测,按照上面的设计,如果有一个用户下载了应用,其它用户从其它机器下载到的JNLP还是第一个用户的JNLP,这是一个更加严重的问题。

由于URL是一样的,现在考虑更改时间戳,即在getJnlpFile中显式的将timesstamp改为当前的时间:

long lastModified = new java.util.Date().getTime();

这样,任何一次请求都不会从缓存中获得,而是重新生成一个,好象这能很好的解决这个问题了吧?

但事实远没有想象的那么简单。这跟WEBSTART与服务端的交互过程有关系。

WEBSTART要通过多次从服务端交互才会真正下载JNLP文件,这主要是验证一些时间等相关的属性(具体我没有看代码)。大至是三次才会真正的把JNLP下载下来(其实服务端会生成三次,真正下载的是第三个),由于我们的SESSIONID是从SERVLET内部的REQUEST中直接得到,这样一来,实际上只有第一个请求的SESSIONID是正确的(因为它是直接从浏览器中进入的),其它两个都是WEBSTART用URLConnection建立的连接,SESSIONID都是新生成的,而下载的恰恰又是第三个,这样一来,又黄了!!!

接下来的想法是自己设法传SESSIONID,而不是从当前REQUEST中取。所以,就刚才启动WEBSTART的链接改为如下形式:

<a href="/myapp/swt/index.jnlp?sessionid=<%=request.getSession().getId()%>">启动客户端程序</a>

这样,生成的URL会是:

http://localhost:8899/myapp/swt/index.jnlp?sessionid=F8864B2CDF60AE371CD6DFC189E80C78

按照前面的JNLP文件,下载下来的JNLP第一行是:

<jnlp spec="1.0 " codebase="http://127.0.0.1:8899/myapp/swt/" href=” http://localhost:8899/myapp/swt/index.jnlp?sessionid=F8864B2CDF60AE371CD6DFC189E80C78”>

既然有了SESSIONID(这意味着每个请求的URL都不会一样!),我们就用不着将时间戳改为当前时间了,还按原来的做就行了。

到此为止,好像问题解决的很彻底哦!但不要高兴的太早!!!!!

我们同样做实验:

1、 将WEBSTART应用清空

2、 登录系统,下载安装应用并运行,一切OK!

3、 退出该系统

4、 打开新的浏览器并登录

5、 点相应的链接启动WEBSTART应用

6、 怪了:SESSIONID怎么还是前面的一个呢?

 查看jnlp-servlet日志,刚才说了,要经过多次握手才会实际的下载JNLP,从流程中发现,客户端发的请求,第一个是对的即是http://localhost:8899/myapp/swt/index.jnlp?sessionid=F8864B2CDF60AE371CD6DFC189E80C78

 SESSION是最新的,但第二个请求,SESSION怎么就是以前的呢?

原来,WEBSTART在经过第一次握手之后,发现本地有该应用,就用该应用JNLP中的href字段发送下面的请求,导致了刚才的问题。

后面的解决办法说起来就没什么了,直接去掉href字段就行了,如下片段:

<?xml version="1.0" encoding="utf-8"?>

<jnlp spec="1.0 " codebase=" $ $codebase">

这样,每次都用新的URL去请求了!!

说来说去,只是过程,其它代码中改得并不多,主要是增加了SESSION参数。

在以后动态更改应用的MAIN类时,思路也差不多。

其它人需地做的改动:

更改JNLP,去掉href项

换成新的jnlp_servlet

清除当前已安装的应用。

将链接改为有SESSIONID为参数的链接。

转载:文章来自于http://java.linuxjiaocheng.com/applet-api/sdk-tutorial/xml-jsp-programming2601.html
posted @ 2007-06-13 19:05 汤汤 阅读(756) | 评论 (0)编辑 收藏