断点

每天进步一点点!
posts - 174, comments - 56, trackbacks - 0, articles - 21

2010-5-4 9:55:00 org.apache.catalina.session.StandardManager doLoad
严重: IOException while loading persisted sessions: java.io.EOFException
java.io.EOFException
        at java.io.ObjectInputStream$PeekInputStream.readFully(ObjectInputStream.java:2228)
        at java.io.ObjectInputStream$BlockDataInputStream.readShort(ObjectInputStream.java:2694)
        at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:761)
        at java.io.ObjectInputStream.<init>(ObjectInputStream.java:277)
        at org.apache.catalina.util.CustomObjectInputStream.<init>(CustomObjectInputStream.java:58)
        at org.apache.catalina.session.StandardManager.doLoad(StandardManager.java:362)
        at org.apache.catalina.session.StandardManager.load(StandardManager.java:321)
        at org.apache.catalina.session.StandardManager.start(StandardManager.java:637)
        at org.apache.catalina.core.ContainerBase.setManager(ContainerBase.java:438)
        at org.apache.catalina.core.StandardContext.start(StandardContext.java:4258)
        at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
        at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
        at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:525)
        at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:920)
        at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:883)
        at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:492)
        at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1138)
        at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)
        at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
        at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
        at org.apache.catalina.core.StandardHost.start(StandardHost.java:719)
        at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
        at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
        at org.apache.catalina.core.StandardService.start(StandardService.java:516)
        at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
        at org.apache.catalina.startup.Catalina.start(Catalina.java:566)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:585)
        at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)

解决:
删除Tomcat里面的work\Catalina\localhost下的内容即可解决。

posted @ 2010-05-04 10:09 断点 阅读(287) | 评论 (0)编辑 收藏

今天测试工程的时候,我用本地“承保工程”调用另外一个同事的“规则工程”,也报了上面的错误。


网上相关解决如下:
java.lang.UnsupportedClassVersionError: Bad version number in .class file异常,检查了一下我的myEclipse,发现不知道啥时候不小心将编译器改成JDK6.0了,那个工程是从同事的机上拷贝过来的,用的编译器是JDK5.0,试了一下,果然是这个问题引起。
    那次在Linux上部署工程时也出现过因为版本不同引起的问题,那时我们用的IDE的编译器是JDK5.0,而那台Linux装的是JDK6.0,部署后发现很多功能都出错,看来有些东西还是得注意一下啊。
    附,在myEclipse中改变编译器的方法:Project->Properties->Java Compiler->Configure Workspace Setting,在弹出的页面中可以进行设置。

posted @ 2010-04-25 17:52 断点 阅读(301) | 评论 (0)编辑 收藏

在操作Drools的测试例子时,Eclipse后台报以下错误:
org.drools.RuntimeDroolsException: Unable to load dialect 'org.drools.rule.builder.dialect.java.JavaDialectConfiguration:java'
 at org.drools.compiler.PackageBuilderConfiguration.addDialect(PackageBuilderConfiguration.java:160)
 at org.drools.compiler.PackageBuilderConfiguration.buildDialectConfigurationMap(PackageBuilderConfiguration.java:146)
 at org.drools.compiler.PackageBuilderConfiguration.init(PackageBuilderConfiguration.java:121)
 at org.drools.compiler.PackageBuilderConfiguration.<init>(PackageBuilderConfiguration.java:98)
 at org.drools.compiler.PackageBuilder.<init>(PackageBuilder.java:124)
 at org.drools.compiler.PackageBuilder.<init>(PackageBuilder.java:86)
 at com.sample.DecisionTableTest.readDecisionTable(DecisionTableTest.java:58)
 at com.sample.DecisionTableTest.main(DecisionTableTest.java:35)
Caused by: java.lang.RuntimeException: The Eclipse JDT Core jar is not in the classpath
 at org.drools.rule.builder.dialect.java.JavaDialectConfiguration.setCompiler(JavaDialectConfiguration.java:91)
 at org.drools.rule.builder.dialect.java.JavaDialectConfiguration.init(JavaDialectConfiguration.java:52)
 at org.drools.compiler.PackageBuilderConfiguration.addDialect(PackageBuilderConfiguration.java:156)
 ... 7 more


主要是缺少一个jar包:org.eclipse.jdt.core_3.3.1.v_780_R33x.jar而引起的。

posted @ 2010-03-16 00:30 断点 阅读(2111) | 评论 (0)编辑 收藏

package org.jbpm.helloworld;

import junit.framework.TestCase;
import org.jbpm.graph.def.ProcessDefinition;
import org.jbpm.graph.exe.ProcessInstance;
import org.jbpm.graph.exe.Token;

public class HelloWorldTest extends TestCase {
      
  public void testHelloWorldProcess() {
        ProcessDefinition processDefinition = ProcessDefinition.parseXmlResource("helloWorld.xml");
        /* 从这里可以看出,是对流程定义的XML进行解析*/
   
    ProcessInstance processInstance =  new ProcessInstance(processDefinition);
    Token token = processInstance.getRootToken();
     assertSame(processDefinition.getStartState(), token.getNode()); 
     token.signal();
     assertSame(processDefinition.getNode("s"), token.getNode());
     token.signal();
     assertSame(processDefinition.getNode("end"), token.getNode());
  }



 流程定义文件:helloWorld.xml
<?xml version="1.0" encoding="UTF-8"?>
<process-definition xmlns="urn:jbpm.org:jpdl-3.1" name="Helloworld">
        <start-state>
                <transition to='s' />
         </start-state>
          <state name='s'>
                 <transition to='end' />
        </state>
         <end-state name='end' />
</process-definition>

posted @ 2010-03-11 00:06 断点 阅读(295) | 评论 (0)编辑 收藏

package rules;

import java.io.InputStream;
import java.io.StringReader;
import java.util.ArrayList;
import java.util.List;

import org.drools.RuleBase;
import org.drools.RuleBaseFactory;
import org.drools.WorkingMemory;
import org.drools.compiler.PackageBuilder;
import org.drools.decisiontable.InputType;
import org.drools.decisiontable.SpreadsheetCompiler;
import org.drools.rule.Package;


public class TestPremium {
 public static final String path = "rules\\premium\\0326\\02\\030006\\rate.xls";
 
 public static void main(String[] args) throws Exception {
  try {
   RuleBase ruleBase = readDecisionTable();
   WorkingMemory workingMemory = ruleBase.newStatefulSession();
   int flag = path.indexOf("FormulaOrder");   
   ElementResultVO r = new ElementResultVO();
   PremiumHelper helper = new PremiumHelper();
   workingMemory.setGlobal("r", r);
   workingMemory.setGlobal("helper", helper);
   
   AppBaseVO base  = new AppBaseVO();
   AppVhlVO vhl = new AppVhlVO();
   AppPrmCoefVO prmCoef = new AppPrmCoefVO();
      
   base.setCAmtCur("01");
   base.setNAmt(4000000d);
   
   workingMemory.insert(base);
   workingMemory.insert(vhl);
   workingMemory.insert(prmCoef);
   
   workingMemory.fireAllRules();
   
   System.out.println("==========compile success!===========");
   
  } catch (Exception e) {
   System.out.println("==========compile failure!===========");
   e.printStackTrace();
  }
 }
 
 private static RuleBase readDecisionTable() throws Exception {
         final SpreadsheetCompiler converter = new SpreadsheetCompiler();
         InputStream is = TestPremium.class.getClassLoader().getResourceAsStream(path);
          final String drl = converter.compile( is, InputType.XLS );
          PackageBuilder builder = new PackageBuilder();
          builder.addPackageFromDrl( new StringReader( drl ) );
          Package pkg = builder.getPackage();
          RuleBase ruleBase = RuleBaseFactory.newRuleBase();
          ruleBase.addPackage( pkg );
          return ruleBase;
 }

}

++++++++++++++++++++++++++++++++++++++
执行后的一部分:
#From row number: 369
rule "_369"
  salience 65167
  activation-group "x"
 when
      vhl:AppVhlVO(CUsageCde == "374015", CVhlTyp == "365012", 
      eval(helper.getVhlYear(vhl.getCFstRegYm())>=4 && helper.getVhlYear(vhl.getCFstRegYm())<1000))
 then
      r.putCoef("rate",0.67);
      r.putField("Table.col","Cvrg.NRate");
end

posted @ 2010-03-10 23:00 断点 阅读(886) | 评论 (1)编辑 收藏

package com.premium.rules;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.Reader;
import java.io.StringReader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

import org.apache.log4j.Logger;
import org.drools.compiler.DroolsParserException;
import org.drools.compiler.PackageBuilder;
import org.drools.decisiontable.InputType;
import org.drools.decisiontable.SpreadsheetCompiler;
import org.drools.rule.Package;

public class DrlPackageManager {

 // 用于缓存Drools的Package,key为Excel的完整路径,value为此文件编译过后的Package
 static Map<String, Package> pkgMap = new HashMap<String, Package>();
 private static Logger logger = Logger.getLogger(DrlPackageManager.class);


/**
  * 通过Excel的文件名缓存Drools的Package
  *
  * @param fileName
  * @return
  * @throws Exception
  */
 public static Package getPackageByXsl(String fileName) throws Exception {
  Package pkg = (Package) pkgMap.get(fileName);
  if (pkg != null)
   return pkg;

  final SpreadsheetCompiler converter = new SpreadsheetCompiler();
  InputStream is = null;
  try {
   is = DrlPackageManager.class.getResourceAsStream(fileName);
  } catch (Exception e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
   is.close();
   throw new Exception("====读取规则的资源文件" + fileName + "出错,请检查文件"+ fileName + "=====", e);
  }
  String drl = null;
  try {
   drl = converter.compile(is, InputType.XLS);
   logger.debug("Drools Excel规则文件:" + fileName + "编译成.drl文件的结果:"+ drl);
  } catch (Exception e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
   is.close();
   throw new Exception("xls文件编译成drl文件出错", e);
  }

  PackageBuilder builder = new PackageBuilder();
  StringReader srd = new StringReader(drl);
  builder.addPackageFromDrl(srd);
  pkg = builder.getPackage();
  pkgMap.put(fileName, pkg);
  is.close();
  return pkg;
 }

}

posted @ 2010-03-10 22:29 断点 阅读(1252) | 评论 (0)编辑 收藏

1、Drools是什么?
Drools 是一个基于Charles Forgy's的Rete算法的,专为Java语言所设计的规则引擎。Rete算法应用于面向对象的接口将使基于商业对象的商业规则的表达更为自然。Drools是用Java写的,但能同时运行在Java和.Net上。

一路到底的框架:
大多数开发者都有自己喜爱的框架。无特定顺序,它们包括表现层框架(Struts, JSF, Cocoon和Spring),持久化框架(JDO, Hibernate, Cayenne and Entity Beans)以及结构框架(EJB, 又是Spring, Pico和Excalibur), 还有其它很多。每种框架都各有所长,给开发者提供子许多“即开即用”的功能。使用框架来部署应用意味着你避免了许多让人厌烦的细节,让你集中注意力到关键之处。
到目前为直,在框架所能做的事中仍然有一个缺口,那就是商业逻辑没有框架。像EJB和Spring这样的工具虽好,但它们却几乎没有提及怎么组织你的那些if …then语句。把Drools加到你的开发工具箱中意味着现在你可以“一路到底”的使用框架来构建你的应用程序。


2.Drools4.0版本:
JBoss Drools是一款开源的业务规则引擎,目前已经发布了4.0版本。在4.0版本中主要的特色和改进如下:
1.更高的性能:较之于之前的版本,Drools 4.0更为高效并且占用更少的内存空间。内部的性能测试表明,性能的提升已经从几分钟缩减为若干秒钟。
2.提升的表达能力:当前的发布版引入了更为强大且的业务行为脚本语言(MVFlex表达式语言)。
3.友好的业务分析工具:一个具备向导功能的规则编辑器的增加,使得非程序员用户可以设计复杂的业务规则,并在没有编写任何代码的情况下自动绑定企业数据。提供带有菜单提示和下拉列表的向导来帮助用户完成设计过程。
4.规则流的能力:可视化的建模技术可以使用户声明式地为相应规则的执行路径建立访问模型。它同样还允许在单个工作内存中存在多个并发工作流,并根据控制典型的业务处理过程的需求,从根本上组织规则的执行。 5.多应用支撑:对于有状态和无状态处理过程增强的支持以及全面的线程安全性,辅助Drools更轻易的嵌入在Java平台,JavaEE以及面向服务的商业应用之中。
6.直接可和Hibernate集成:用户可以直接在Hibernate驱动的RDBMS查询中对数据(facts)进行判断。现有的Hibernate组件可以直接用在规则引擎里,减少编码的工作量。
7.为非程序员设计的BRMS:从技术角度来看,新的BRMS基于Web开发,使用AJAX呈现,便于协作,是一个编写、版本化控制和管理规则的系统。业务分析师目前可以交互式的授权或修改自动转换的规则。管理员目前具备完全的生命周期控制能力,包含何种规则在QA阶段,分段(staging),以及实施(production)阶段等等。

3.Drools的总体架构:
我们使用Drools就是为了让它处理数据与规则的关系,因此Drools要获得数据和获得规则,然后进行执行。因此Drools分为编制和运行时两个部分。
编制是指产生rule的过程,Drools用DRL,或者XML来描述规则。编制的过程包括为规则建立DRL 或XML 文件,传入一个由Antlr 3 文法器定义的解析器中。解析器对文件中规则文法的正确性进行检查并为descr 建立一个中间结构,在AST 中的descr 代表规则的描述。AST 然后将descr 传入Package Builder中,由其进行打包。Package Builder 同时负责包括打包中用到的所有代码产生器和编译器。Package 对象是自包含并可配置的,它是一个包含规则的序列化的对象。

RuleBase 是运行时组件,包含一个或多个Package。Package 在任何时候都可以向RuleBase中添加或删除。一个RuleBase 可以同时初始化多个Working Memory,在其间维护着一个弱引用,除非重新进行配置。Working Memory 包含许多子组件,如Working Memory Event Support(事件支持),Truth Maintenance System(真值维护系统), Agenda 和 Agenda Event Support(事件支持)。向Working Memory 中设置对象的工作可能要在建立了一个或多个激活的规则后才结束。Agenda 负有规划激活规则运行的责任。


4.Drools主要有以下类实现:
编制:
XmlParser,DrlParser 分别用来解析XML描述的规则文件和DRL描述的规则文件。
PackageBuilder 创建package实例。
例如:
PackageBuilder builder = new PackageBuilder();
builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "package1.drl" ) ) );
builder.addPackageFromXml( new
InputStreamReader( getClass().getResourceAsStream( "package2.xml" ) ) );
Package pkg = builder.getPackage();

运行时的类:
RuleBase 使用RuleBaseFactory 实例化,默认情况下返回一个ReteOO 的RuleBase。Package通过使用addPackage 方法按顺序加入。你可以指定任何名称空间的Packages 或者同一名称的多个包加入RuleBase。
RuleBase ruleBase = RuleBaseFactory.newRuleBase();
ruleBase.addPackage( pkg );

事实数据相关类:
WorkingMemory 保存运行时事实数据的地方。
由ruleBase产生:WorkingMemory wm= ruleBase.newStatefulSession();

加载事实数据:
wm.insert(object );
insert方法返回一个FactHandle对象指向workingMemory中对象的引用。如果要对Object进行修改删除等操作都要通过FactHander对象来完成。

在准备好Rule,和Fact后 就可以调用 WorkingMemory对象的 fireAllRules()方法执行规则引擎。

Agenda上面提到过它负有规划激活规则运行的责任。
它运行过程分两个阶段:
1) WorkingMemory Actions : assert 新的 facts ,修改存在的 facts 和 retract facts 都是 WorkingMemory Actions 。通过在应用程序中调用 fireAllRules() 方法,会使引擎 转换到 Agenda Evaluatioin 阶段。
2) Agenda Evaluation :尝试选择一条规则进行激发( fire )。如果规则没有找到就 退出,否则它就尝试激发这条规则,然后转换到 WorkingMemory Actions 阶段,直到 Agenda中为空。 

posted @ 2010-03-10 21:43 断点 阅读(505) | 评论 (0)编辑 收藏

        Eval 是Javascript 中一个非常有用而奇特的预定义函数,它的概念和作用也像C 语言中的指针一样较难理解,因而在实际应用中常常不能运用得当。函数Eval的功能是把一个字符串参数转换成Javascript的代码,这个被转换的代码可以是一个变量名,也可以是一个算术表达式,甚至是一个函数表达式。如i = eval("name1")是把名为name1 的变量赋值给变量i;i=eval("3+2")是把表达式3+2 的值5 赋给变量i ; i = eval("funname(n)")是把函数funname(n)返回值传给变量i。这时,你也许要问了,这不是多此一举吗?直接写成i=name1;i=3+2;i=funname(n)不就行了吗?是的,如果我们仅仅把字符串值当作参数,是一点作用都不起。但如果我们把字符串变量作为参数,Eval 的作用就大了。如i=eval(str)(其中,str 是字符串变量),str 作为一个变量,其值可以动态地发生变更,从而使i = eval(str)产生不同的结果。这时str是不是像C语言的指针?它“指”向name1(即str 的值是"name1" 字串),i得到的是变量name1 的值。它“指”向一个函数名,就调用该函数并返回值给i(但该函数必须事先定义好,Javascript 引擎要找得到才行)。此外,它比“指针”更有用的是,还可解析执行动态生成的运算表达式。
        
        下面通过一个Web仿真计算器实例来描述它的这个作用。这是一个基于Web的计算器仿真程序。用户可以像操作一个现实世界中的计算器一样,通过单击按钮输入数据和运算符号,当输入等号后在文本框中得到最终结果。它的原理很简单,就是记录用户输入的运算式字串,然后用Eval 函数把该字串转成运算式交给Javascript 执行即可。先手动建立一个简单的HTML 文件,只要<html>、head>和<body>元素即可。接着在<body></body>间插入以下html 代码,设置好该程序界面。
<input type="text" name=textdisp value="" ><br>
<input type="button" name=leftk value="(" onclick="yunsuan(value)">
<input type="button" name=rightk value=")" onclick="yunsuan(value)">
<input type="button" name=op1 value="1" onclick="yunsuan(value)">
<input type="button" name=op2 value="2" onclick="yunsuan(value)">
<input type="button" name=op3 value="3" onclick="yunsuan(value)">
<input type="button" name=op4 value="4" onclick="yunsuan(value)">
<br><p>
<input type="button" name=op5 value="5" onclick="yunsuan(value)">
<input type="button" name=op6 value="6" onclick="yunsuan(value)">
<input type="button" name=op7 value="7" onclick="yunsuan(value)">
<input type="button" name=op8 value="8" onclick="yunsuan(value)">
<input type="button" name=op9 value="9" onclick="yunsuan(value)">
<input type="button" name=op0 value="0" onclick="yunsuan(value)">
<br><p>
<input type="button" name=oppoint value="." onclick="yunsuan(value)">
<input type="button" name=opadd value="+" onclick="yunsuan(value)">
<input type="button" name=opsub value="-" onclick="yunsuan(value)">
<input type="button" name=opmul value="*" onclick="yunsuan(value)">
<input type="button" name=opdiv value="/" onclick="yunsuan(value)">
<input type="button" name=opeql value="=" onclick="yunsuan(value)">
<br><p>
<input type="button" name=cle value="restar" onclick="res()">
现在用IE6 打开它,就会得到如图所示的效果。再接再厉,现在在<head></head>中输入以下Javascript
代码:
<TITLE>test</TITLE>
<script language="javascript">
var expstring="";
var numstring="";
function yunsuan(btn){
if(btn=="=")
textdisp.value=eval(expstring);
else
{if(((btn>="0")&&(btn<="9"))||(btn=="."))
{numstring=numstring+btn;
textdisp.value=numstring;
}
else
numstring="";
expstring=expstring+btn;
}
}
function res(){
expstring="";
textdisp.value="";
numstring="";
}
</script>
这样,我们利用Eval 函数,仅仅十几行代码就做好了这个计算器。

转载:http://school.cfan.com.cn/pro/pother/2006-08-28/1156732532d14455.shtml

posted @ 2010-03-09 23:24 断点 阅读(697) | 评论 (0)编辑 收藏

目前来看,JS框架以及一些开发包和库类有如下几个:Dojo 、Scriptaculous 、Prototype 、yui-ext 、Mochikit、mootools 、moo.fx 、jQuery。

Dojo (JS library and UI component ):
Dojo是目前最为强大的j s框架,它在自己的Wiki上给自己下了一个定义,dojo是一个用JavaScript编写的开源的DHTML工具箱。dojo很想做一个“大一统”的 工具箱,不仅仅是浏览器层面的,野心还是很大的。Dojo包括ajax, browser, event, widget等跨浏览器API,包括了JS本身的语言扩展,以及各个方面的工具类库,和比较完善的UI组件库,也被广泛 应用在很多项目中,他的UI组件的特点是通过给html标签增加tag的方式进行扩展,而不是通过写JS来生成,dojo的API模仿Java类库的组织 方式。 用dojo写Web OS可谓非常方便。dojo现在已经4.0了,dojo强大的地方在于界面和特效的封装,可以让开发者快速构建一些兼容标准的界面。
优点:库相当完善,发展时间也比较长,功能强大,据说利用dojo的io.bind()可以实现comet,看见其功能强大非一般,得到IBM和SUN的支持。
缺点:文件体积比较大,200多KB,初次下载相当慢,此外,dojo的类库使用显得不是那么易用,j s语法增强方面不如prototype。

Prototype (JS OO library):
是一个非常优雅的JS库,定义了JS的面向对象扩展,DOM操作API,事件等等,以prototype为核心,形成了一个外围的各种各样 的JS扩展库,是相当有前途的JS底层框架,值得推荐,感觉也是现实中应用最广的库类(RoR集成的AJAX JS库),之上还有 Scriptaculous 实现一些JS组件功能和效果。
优点:基本底层,易学易用,甚至是其他一些js特效开发包的底层,体积算是最小的了。
缺点:如果说缺点,可能就是功能是他的弱项

Scriptaculous (JS UI component based on prototype):
Scriptaculous是基于prototype.js框架的JS效果。包含了6个js文件,不同的文件对应不同的js效果,所以说,如果底层用 prototype的话,做js效果用Scriptaculous那是再合适不过的了,连大名鼎鼎的digg都在用他。
优点:基于prototype是最大的优点,由于使用prototype的广泛性,无疑对用户书锦上添花,并且在《ajax in action》中就拿Scriptaculous来讲述js效果。
缺点:刚刚兴起,需要时间的磨练。

yui-ext (JS UI component):
基于Yahoo UI的扩展包yui-ext是具有CS风格的Web用户界面组件 能实现复杂的Layout布局,界面效果可以和backbase媲美,而且使用纯javascript代码开发。真正的可编辑的表格Edit Grid,支持XML和Json数据类型,直接可以迁入grid。许多组件实现了对数据源的支持,例如动态的布局,可编辑的表格控件,动态加载的Tree 控件、动态拖拽效果等等。1.0 beta版开始同Jquery合作,推出基于jQuery的Ext 1.0,提供了更多有趣的功能。
优点:结构化,类似于java的结构,清晰明了,底层用到了Jquery的一些函数,使整合使用有了选择,最重要的一点是界面太让让人震撼了。
缺点:太过复杂,整个界面的构造过于复杂。

Mochikit :
MochiKit自称为一个轻量级的js框架。MochiKit 主要受到 Python 和 Python 标准库提供的很多便利之处的启发,另外还缓解了浏览器版本之间的不一致性。其中的 MochiKit.DOM 尤其方便,能够以比原始 JavaScript 更友好的方式处理 DOM 对象。MochiKit.DOM 大部分都是针对 XHTML 文档定制的,如果与 MochiKit 和 Ajax 结合在一起,使用 XHTML 包装的微格式尤其方便。Mochikit可以直接对字符串或者数字格式化输出,比较实用和方便。它还有自己的 js 代码解释器。
优点:MochiKit.DOM这部分很实用,简介也是很突出的。
缺点:轻量级的缺点。

mootools :
MooTools是一个简洁,模块化,面向对象的JavaScript框架。它能够帮助你更快,更简单地编写可扩展和兼容性强的JavaScript代码。Mootools跟prototypejs相类似,语法几乎一样。但它提供的功能要比prototypejs多,而且更强大。比如增加了动画特效、拖放操作等等。
优点:可以定制自己所需要的功能,可以说是prototypejs的增强版。
缺点:不大不小,具体应用具体分析。

moo.fx :
moo.fx是一个超级轻量级的javascript特效库(7k),能够与prototype.js或mootools框架一起使用。它非常快、易于使用、跨浏览器、符合标准,提供控制和修改任何HTML元素的CSS属性,包括颜色。它内置检查器能够防止用户通过多次或疯狂点击来破坏效果。moo.fx整体采用模块化设计,所以可以在它的基础上开发你需要的任何特效。
优点:小块头有大能耐。
缺点:这么小了,已经不错了。

jQuery:
jQuery是一款同prototype一样优秀js开发库类,特别是对css和XPath的支持,使我们写js变得更加方便!如果你不是个js高手又想写出优秀的js效果,jQuery可以帮你达到目的!并且简介的语法和高的效率一直是jQuery追求的目标。
优点:注重简介和高效,js效果有yui-ext的选择,因为yui-ext 重用了很多jQuery的函数。
缺点:据说太嫩,历史不悠久。

posted @ 2010-03-07 00:00 断点 阅读(1163) | 评论 (0)编辑 收藏

IMP-00017: 由于 ORACLE 的 600 错误,以下的语句失败
 "CREATE PACKAGE BODY quest_soo_util wrapped"
IMP-00003: 遇到 ORACLE 错误 600
ORA-00600: 内部错误代码,参数: [16201], [], [], [], [], [], [], []
IMP-00017: 由于 ORACLE 的 600 错误,以下的语句失败
 "CREATE PACKAGE BODY QUEST_SOO_PKG wrapped"

以上是imp导入Oracle是出现的错误。

转载,其他情况出现的ORACLE 的 600 错误:

这个错误是 drop 用户时产生的,用户无法 drop。既然如此,登录该用户删除其中的procedure,结果也出现了该错误。有个帖子介绍说这是 Oracle 的一个 bug(No. 2422726),并给出了解决办法。这里记录一下:
 1. 错误现象:
SQL> show user
USER 为"SYS"
SQL> select * from v$version;
 
BANNER
------------------------------------------------------------
Oracle8i Release 8.1.6.0.0 - Production
PL/SQL Release 8.1.6.0.0 - Production
CORE    8.1.6.0.0       Production
TNS for 32-bit Windows: Version 8.1.6.0.0 - Production
NLSRTL Version 3.4.1.0.0 - Production
 
SQL> drop user hos_kf_hl cascade;
drop user hos_kf_hl cascade
*
ERROR 位于第 1 行:
ORA-00600: 内部错误代码,自变量: [16201], [], [], [], [], [], [], []
 
SQL> conn hos_kf_hl/test@qmyb
已连接。
SQL> drop procedure kill_session;
drop procedure kill_session
*
ERROR 位于第 1 行:
ORA-00600: 内部错误代码,自变量: [16201], [], [], [], [], [], [], []

 
2. 查询视图 procedure$,确认该错误:
SQL> select obj#,owner#,type# from sys.obj$ where name ='KILL_SESSION' and owner#=96;
 
      OBJ#     OWNER#      TYPE#
---------- ---------- ----------
     55491         96          7
 
SQL> select * from procedure$ where obj# = 55491;
 
      OBJ# AUDIT$                                 STORAGESIZE    OPTIONS
---------- -------------------------------------- ----------- ----------

 
3. 解决
SQL> insert into procedure$ values (55491, '----------------', null, 2);
 
1 row inserted
 
SQL> commit;
 
Commit complete
 
SQL> drop procedure kill_session;
 
过程已丢弃。
 
SQL> conn sys/password@s177 as sysdba
已连接。
SQL> drop user hos_kf_hl cascade;
 
用户已丢弃

posted @ 2010-03-06 23:03 断点 阅读(1143) | 评论 (0)编辑 收藏

仅列出标题
共18页: First 上一页 3 4 5 6 7 8 9 10 11 下一页 Last