﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-深蓝的天空下,有你有我...</title><link>http://www.blogjava.net/liuyxit/</link><description>共享酸、甜、苦、辣</description><language>zh-cn</language><lastBuildDate>Sun, 03 May 2026 13:20:40 GMT</lastBuildDate><pubDate>Sun, 03 May 2026 13:20:40 GMT</pubDate><ttl>60</ttl><item><title>对Ralasafe的三言两语</title><link>http://www.blogjava.net/liuyxit/archive/2013/03/04/396051.html</link><dc:creator>三刀流の逆风</dc:creator><author>三刀流の逆风</author><pubDate>Mon, 04 Mar 2013 15:53:00 GMT</pubDate><guid>http://www.blogjava.net/liuyxit/archive/2013/03/04/396051.html</guid><wfw:comment>http://www.blogjava.net/liuyxit/comments/396051.html</wfw:comment><comments>http://www.blogjava.net/liuyxit/archive/2013/03/04/396051.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/liuyxit/comments/commentRss/396051.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/liuyxit/services/trackbacks/396051.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp; 很早以前，我就想过实现数据级的系统安全组件，可惜个人能力有限，一直未能实现。<br />&nbsp;&nbsp;&nbsp; 一段时间，曾搜寻过国外的一些知名安全管理，似乎没找到合乎心意的，就连大名鼎鼎的Spring出的SpringSecurity居然也没有这方面的实现。所谓的 RDBMS NoSQL实现，是如此的不堪一试。<br />&nbsp;&nbsp;&nbsp; 然，在iteye.com论坛看到过 metadmin，后来才知这就是Ralasafe的前身，最终在在&#8220;强大的&#8221;百度下，找到了Ralasafe(www.Ralasafe.cn)，刚好是1.2第一版发布的时候。 <br />&nbsp;&nbsp;&nbsp; 自然，下载搭建，过程是漫长的。 <br />&nbsp;&nbsp;&nbsp; 1.是当时居然没有默认的UTF-8的支持,汪兄既然是全球性的推广，为何不写多个filter。 <br />&nbsp;&nbsp;&nbsp; 2.没有MSSQL的结构，虽然改一个数据结构不是难事，毕竟很多新手又会犯很多错了。 <br />&nbsp;&nbsp;&nbsp; 3.后台控制界面什么的都有，只是要嵌入已有架构中，似乎不是一件简单的事（嘿，估计是本人水平差）。<br />&nbsp;&nbsp;&nbsp; 之后加入了Q群，由于项目都是很紧张的，看过一部分代码后，一直没有再深入了。<br /><br />&nbsp;&nbsp;&nbsp; 今天在群上看到汪在跟用户谈论Ralasafe的问题，可见社区一直还没有形成互动，看到实在可惜。<br />&nbsp;&nbsp;&nbsp; 所以就牢骚了以下一段话：<br />&nbsp;-------------------------- <br />&nbsp;&nbsp;&nbsp; 对于Ralasafe，我想说几句，刚好汪也在。<br />&nbsp;&nbsp;&nbsp; Ralasafe是一个很不错的安全组件 因为屏掉原有的组件（那怕是功能不好的），启用Ralasafe，需要的是架构能力。<br />&nbsp;&nbsp;&nbsp; 我刚接触到Ralasafe时，很是欣喜，难得在国内有志之士可以做出这样好的组件，并可以开源。但布署测试后,(期间问过一个乱码问题），发现要溶入我原来的架构，并不理想。<br />&nbsp;&nbsp;&nbsp; 而这些入侵性的修改，似乎是一直到底的，很明显一点，是Ralasafe的DAO是自成体系。<br />&nbsp;&nbsp;&nbsp; 启用一个组件，过多的修改（感觉接口也不算很明显），会导致不可预想的BUG。<br />&nbsp;&nbsp;&nbsp; 项目大都是希望快速上线的，而我个人的情况，刚好公司采用FLEX做前端，修改量就更加。 <br />&nbsp;&nbsp;&nbsp; 之前我改SpringSecurity的，只去到操作级，数据权限还没有处理。但它的接口是很明显的，用户DAO接口，提供的权限数据接口。基本我从hibernate转到nutz，这样更改DAO，也就是一天半天的功夫。<br />&nbsp;&nbsp;&nbsp;&nbsp; 于是，Ralasafe被我放下了,其实我也很想用起来，但实际没有时间让我深入研究并修改。<br />&nbsp;&nbsp;&nbsp;&nbsp; 所以我也没对Ralasafe作出什么贡献。 然后，我个人认为Ralasafe，可提高几方面： <br />&nbsp;&nbsp;&nbsp;&nbsp; 1.对多数据库的支持（1.2不是不支持，而是没有其它数据库的布署文件，新手就困难了）。 <br />&nbsp;&nbsp;&nbsp;&nbsp; 2.提炼用户登陆接口（其实视图也算是个好的选择），但接口更明显。 <br />&nbsp;&nbsp;&nbsp;&nbsp; 3.提炼权限数据提供接口，让其它的框架可以方便热拔插。（主要是DAO部分）。<br />&nbsp;&nbsp;&nbsp;&nbsp; 4.提炼后台维护的服务类和DAO操作接口，这样用户可以方便自己提供操作界面。 <br />-------------------------- <br />&nbsp;&nbsp;&nbsp;&nbsp; 而平心而论，能将这么好的项目开源出来，的确要很大的勇气。我想在国外将是一件很了不起的事，而国人的习惯，导致很多好的东西推广不起来。<br />&nbsp;&nbsp;&nbsp;&nbsp; 最后希望Ralasafe可以走得更远。 <img src ="http://www.blogjava.net/liuyxit/aggbug/396051.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liuyxit/" target="_blank">三刀流の逆风</a> 2013-03-04 23:53 <a href="http://www.blogjava.net/liuyxit/archive/2013/03/04/396051.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Flex4.5 + Blazed + JAVA出现Channel.Connect.Failed error NetConnection.Call.Failed: HTTP: Failed: url:</title><link>http://www.blogjava.net/liuyxit/archive/2011/10/31/362416.html</link><dc:creator>三刀流の逆风</dc:creator><author>三刀流の逆风</author><pubDate>Mon, 31 Oct 2011 15:08:00 GMT</pubDate><guid>http://www.blogjava.net/liuyxit/archive/2011/10/31/362416.html</guid><wfw:comment>http://www.blogjava.net/liuyxit/comments/362416.html</wfw:comment><comments>http://www.blogjava.net/liuyxit/archive/2011/10/31/362416.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/liuyxit/comments/commentRss/362416.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/liuyxit/services/trackbacks/362416.html</trackback:ping><description><![CDATA[详细的报错内容：
Error: (mx.messaging.messages::ErrorMessage)#0
  body = (Object)#1
  clientId = (null)
  correlationId = "BF5E2F0B-2E2D-AE6C-F609-5A62F45603F0"
  destination = ""
  extendedData = (null)
  faultCode = "Client.Error.MessageSend"
  faultDetail = "Channel.Connect.Failed error NetConnection.Call.Failed: HTTP: Failed: url: 'http://localhost:8080/freight/messagebroker/amf'"
  faultString = "Send failed"
  headers = (Object)#2
  messageId = "00C50FEC-A91C-FB7E-5C3E-5A62F9489CE9"
  rootCause = (mx.messaging.events::ChannelFaultEvent)#3
    bubbles = false
    cancelable = false
    channel = (mx.messaging.channels::AMFChannel)#4
      authenticated = false
      channelSets = (Array)#5
      connected = false
      connectTimeout = -1
      enableSmallMessages = true
      endpoint = "http://localhost:8080/freight/messagebroker/amf"
      failoverURIs = (Array)#6
      id = "my-amf"
      mpiEnabled = false
      netConnection = (flash.net::NetConnection)#7
        client = (mx.messaging.channels::AMFChannel)#4
        connected = false
        maxPeerConnections = 8
        objectEncoding = 3
        proxyType = "none"
        uri = "http://localhost:37813/freight/messagebroker/amf?hostport=localhost:8080&https=N&id=-1"
      piggybackingEnabled = false
      polling = false
      pollingEnabled = true
      pollingInterval = 3000
      protocol = "http"
      reconnecting = false
      recordMessageSizes = false
      recordMessageTimes = false
      requestTimeout = -1
      uri = "http://{server.name}:{server.port}/freight/messagebroker/amf"
      url = "http://{server.name}:{server.port}/freight/messagebroker/amf"
      useSmallMessages = false
    channelId = "my-amf"
    connected = false
    currentTarget = (mx.messaging.channels::AMFChannel)#4
    eventPhase = 2
    faultCode = "Channel.Connect.Failed"
    faultDetail = "NetConnection.Call.Failed: HTTP: Failed: url: 'http://localhost:8080/freight/messagebroker/amf'"
    faultString = "error"
    reconnecting = false
    rejected = false
    rootCause = (Object)#8
      code = "NetConnection.Call.Failed"
      description = "HTTP: Failed"
      details = "http://localhost:37813/freight/messagebroker/amf?hostport=localhost:8080&https=N&id=-1"
      level = "error"
    target = (mx.messaging.channels::AMFChannel)#4
    type = "channelFault"
  timestamp = 0
  timeToLive = 0
	at f/faultHandler()[F:\FB45\f\src\f.mxml:87]
	at mx.rpc::Responder/fault()[E:\dev\4.5.1\frameworks\projects\rpc\src\mx\rpc\Responder.as:68]
	at mx.rpc::AsyncToken/http://www.adobe.com/2006/flex/mx/internal::applyFault()[E:\dev\4.5.1\frameworks\projects\rpc\src\mx\rpc\AsyncToken.as:219]
	at mx.rpc.events::FaultEvent/http://www.adobe.com/2006/flex/mx/internal::callTokenResponders()[E:\dev\4.5.1\frameworks\projects\rpc\src\mx\rpc\events\FaultEvent.as:204]
	at mx.rpc::AbstractOperation/http://www.adobe.com/2006/flex/mx/internal::dispatchRpcEvent()[E:\dev\4.5.1\frameworks\projects\rpc\src\mx\rpc\AbstractOperation.as:244]
	at mx.rpc::AbstractInvoker/http://www.adobe.com/2006/flex/mx/internal::faultHandler()[E:\dev\4.5.1\frameworks\projects\rpc\src\mx\rpc\AbstractInvoker.as:350]
	at mx.rpc::Responder/fault()[E:\dev\4.5.1\frameworks\projects\rpc\src\mx\rpc\Responder.as:68]
	at mx.rpc::AsyncRequest/fault()[E:\dev\4.5.1\frameworks\projects\rpc\src\mx\rpc\AsyncRequest.as:113]
	at mx.messaging::ChannelSet/faultPendingSends()[E:\dev\4.5.1\frameworks\projects\rpc\src\mx\messaging\ChannelSet.as:1619]
	at mx.messaging::ChannelSet/channelFaultHandler()[E:\dev\4.5.1\frameworks\projects\rpc\src\mx\messaging\ChannelSet.as:1209]
	at flash.events::EventDispatcher/dispatchEventFunction()
	at flash.events::EventDispatcher/dispatchEvent()
	at mx.messaging::Channel/connectFailed()[E:\dev\4.5.1\frameworks\projects\rpc\src\mx\messaging\Channel.as:1117]
	at mx.messaging.channels::PollingChannel/connectFailed()[E:\dev\4.5.1\frameworks\projects\rpc\src\mx\messaging\channels\PollingChannel.as:435]
	at mx.messaging.channels::AMFChannel/statusHandler()[E:\dev\4.5.1\frameworks\projects\rpc\src\mx\messaging\channels\AMFChannel.as:453]


＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝
刚开始在网上找到的答案都是：

1.改Project属性的Flex服务器页内容
Root URL(根 URL)为：http://localhost:8080/你的JAVA项目名/
Context root (上下文根目录)为：/你的JAVA项目名

2.改services-config.xml
里的
https://{server.name}:{server.port}/{context.root}/messagebroker/amf
为
https://{server.name}:{server.port}/你的JAVA项目名}/messagebroker/amf

其实都不贴切！！！

！！！！！！
真正的解决问题的方法是：
打开你的工程下/.actionScriptProperties文件，查找“includeNetmonSwc”，从“true”改为“false”，它的作用是：是否导入网络监视器SWC。作为编译配置，当然要关闭。
本文出自 “徐晨光的博客” 博客，请务必保留此出处http://xuchenguang.blog.51cto.com/730272/529873
！！！！！！

隐约记得自己是试过FB里网络监视器的功能。


<img src ="http://www.blogjava.net/liuyxit/aggbug/362416.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liuyxit/" target="_blank">三刀流の逆风</a> 2011-10-31 23:08 <a href="http://www.blogjava.net/liuyxit/archive/2011/10/31/362416.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Eclipse常用插件安装地址</title><link>http://www.blogjava.net/liuyxit/archive/2011/08/16/356621.html</link><dc:creator>三刀流の逆风</dc:creator><author>三刀流の逆风</author><pubDate>Tue, 16 Aug 2011 04:16:00 GMT</pubDate><guid>http://www.blogjava.net/liuyxit/archive/2011/08/16/356621.html</guid><wfw:comment>http://www.blogjava.net/liuyxit/comments/356621.html</wfw:comment><comments>http://www.blogjava.net/liuyxit/archive/2011/08/16/356621.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/liuyxit/comments/commentRss/356621.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/liuyxit/services/trackbacks/356621.html</trackback:ping><description><![CDATA[Eclipse常用插件安装地址
http://subclipse.tigris.org/update_1.6.x/
http://propedit.sourceforge.jp/eclipse/updates/
http://flexformatter.googlecode.com/svn/trunk/FlexFormatter/FlexPrettyPrintCommandUpdateSite
<img src ="http://www.blogjava.net/liuyxit/aggbug/356621.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liuyxit/" target="_blank">三刀流の逆风</a> 2011-08-16 12:16 <a href="http://www.blogjava.net/liuyxit/archive/2011/08/16/356621.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于MySQL5的national varchar不能转为SQLServer2k的nvarchar解决方法。</title><link>http://www.blogjava.net/liuyxit/archive/2011/08/15/356597.html</link><dc:creator>三刀流の逆风</dc:creator><author>三刀流の逆风</author><pubDate>Mon, 15 Aug 2011 15:56:00 GMT</pubDate><guid>http://www.blogjava.net/liuyxit/archive/2011/08/15/356597.html</guid><wfw:comment>http://www.blogjava.net/liuyxit/comments/356597.html</wfw:comment><comments>http://www.blogjava.net/liuyxit/archive/2011/08/15/356597.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/liuyxit/comments/commentRss/356597.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/liuyxit/services/trackbacks/356597.html</trackback:ping><description><![CDATA[MySQL5的national varchar不能转为SQLServer2k的nvarchar,
原因是Mysql5的DBMS脚本没有设定national varchar的转换格式。

解决方法：
1.使用菜单database的change current DBMS...把当前PDM转为MySQL。
2.选择菜单database的edit current DBMS...在弹出的窗口左边的树选择MySQL5->Script->DataType->PhysDataType
里面的解析PhysDataType为：Data types translation table from target database data types to internal data types.
因此在右下边的转换对照表中，增加两行，列名和值如下：
physical model                Internal
------------------------------------
national varchar(%n)       VMBT%n
national char(%n)           MBT%n<img src ="http://www.blogjava.net/liuyxit/aggbug/356597.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liuyxit/" target="_blank">三刀流の逆风</a> 2011-08-15 23:56 <a href="http://www.blogjava.net/liuyxit/archive/2011/08/15/356597.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>用PL/SQL自动处理logminer恢复的数据</title><link>http://www.blogjava.net/liuyxit/archive/2011/06/19/352606.html</link><dc:creator>三刀流の逆风</dc:creator><author>三刀流の逆风</author><pubDate>Sat, 18 Jun 2011 18:11:00 GMT</pubDate><guid>http://www.blogjava.net/liuyxit/archive/2011/06/19/352606.html</guid><wfw:comment>http://www.blogjava.net/liuyxit/comments/352606.html</wfw:comment><comments>http://www.blogjava.net/liuyxit/archive/2011/06/19/352606.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/liuyxit/comments/commentRss/352606.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/liuyxit/services/trackbacks/352606.html</trackback:ping><description><![CDATA[--创建一个表来保存提取出来的sql
create table logmnr_content tablespace tools as  scn,cscn,TIMESTAMP,sql_undo from v$logmnr_contents where 1=0;

--通过dba_objects 查到表对应的 object_id  and   data_object_id ,用来在log中提取该表相关的sql_undo
select object_id,data_object_id from dba_objects where object_name = ???

--通过在os中找到的归档日志范围，进行联机提取
将undo  sql 插入一个表中,比如我的日志序号范围是 5813 到 5850
为了防止临时空间不足，一个一个归档日志文件处理。


begin
for i in 5813..5850 loop



dbms_logmnr.add_logfile(LogFileName=>'/disk2/oradata/arch/crmcn/crmcn_1_'||i||'.arc');
dbms_logmnr.start_logmnr(Options => sys.dbms_logmnr.DICT_FROM_ONLINE_CATALOG);
dbms_logmnr.start_logmnr();

insert into logmnr_content(scn,cscn,TIMESTAMP,sql_undo )
select   scn,cscn,TIMESTAMP,sql_undo from v$logmnr_contents 
where DATA_OBJD# = 67540 ;

commit;
dbms_logmnr.end_logmnr();


end loop;


end;



--将提取出来的sql通过动态sql执行插入表

declare
sql_str varchar2(4000);
begin
for c in (select * from logmnr_content) loop
sql_str := replace(c.sql_undo,';','');
execute immediate sql_str;
end loop;
commit;
end;
注意：如果在这段日志中还有其他对该表的操作的话，可以结合操作类型  OPERATION  和 提交scn    cscn 来判断 到底是不是该恢复的这部分数据。
转自：http://www.itpub.net/thread-324926-1-1.html
<img src ="http://www.blogjava.net/liuyxit/aggbug/352606.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liuyxit/" target="_blank">三刀流の逆风</a> 2011-06-19 02:11 <a href="http://www.blogjava.net/liuyxit/archive/2011/06/19/352606.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>mysql,sqlserver,oracle三种数据库的大对象存取</title><link>http://www.blogjava.net/liuyxit/archive/2011/06/19/352605.html</link><dc:creator>三刀流の逆风</dc:creator><author>三刀流の逆风</author><pubDate>Sat, 18 Jun 2011 18:02:00 GMT</pubDate><guid>http://www.blogjava.net/liuyxit/archive/2011/06/19/352605.html</guid><wfw:comment>http://www.blogjava.net/liuyxit/comments/352605.html</wfw:comment><comments>http://www.blogjava.net/liuyxit/archive/2011/06/19/352605.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/liuyxit/comments/commentRss/352605.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/liuyxit/services/trackbacks/352605.html</trackback:ping><description><![CDATA[mysql 大对象存取:
类型一般应该用mediumblod,
blob只能存2的16次方个byte,
mediumblod是24次方,
一般来说够用了.longblob是32次方有些大.

MYSQL默认配置只能存1M大小的文件,要修改配置,WIN版本的在mysql.ini文件中
修改max_allowed_packet,net_buffer_length等几个参数,或直接SET GLOBAL varName=value.
linux版本可以在启动参数后加-max_allowed_packet=xxM等几个参数.

MYSQL存大对象最好直接就setBinaryStream,又快又方便.
而不要先插入空再造型成BLOB然后再setBlob

例子:
import java.sql.*;
import java.io.*;
public class DBTest {

  
   static String driver = "org.gjt.mm.mysql.Driver";
   static String url = "jdbc:mysql://localhost:3306/test";
   static String user = "root";
   static String passwd = "passwd";
   public static void main(String[] args) throws Exception {
     Connection conn = null;
     try {
       Class.forName(driver);
       conn = DriverManager.getConnection(url,user,passwd);
      
       int op = 1;
       //插入
       if (op == 0) {
         PreparedStatement ps = conn.prepareStatement("insert into tb_file values (?,?)");
         ps.setString(1, "aaa.exe");
         InputStream in = new FileInputStream("d:/aaa.exe");
         ps.setBinaryStream(2,in,in.available());
         ps.executeUpdate();
         ps.close();
       }
       else {
         //取出
         PreparedStatement ps = conn.prepareStatement("select * from   tb_file where filename = ?");
         ps.setString(1, "aaa.exe");
         ResultSet rs = ps.executeQuery();
         rs.next();
         InputStream in = rs.getBinaryStream("filecontent");
         System.out.println(in.available());
         FileOutputStream out = new FileOutputStream("d:/bbb.exe");
         byte[] b = new byte[1024];
         int len = 0;
         while ( (len = in.read(b)) != -1) {
           out.write(b, 0, len);
           out.flush();
         }
         out.close();
         in.close();
         rs.close();
         ps.close();
       }
     }
     catch (Exception ex) {
       ex.printStackTrace(System.out);
     }
     finally {
       try {conn.close();}
       catch (Exception ex) { }
     }
   }
}


sqlserver 大对象存取没有什么多说的,只要是image类型就行了,注意这是column类型,有人以为它只能存
图象.image是文件镜象的意思.
import java.sql.*;
import java.io.*;
public class DBTest {


   static String driver = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
   static String url = "jdbc:microsoft:sqlserver://192.168.0.202:9999999999;DatabaseName=dddd";
   static String user = "sa";
   static String passwd = "ps";
   public static void main(String[] args) throws Exception {
     Connection conn = null;
     try {
       Class.forName(driver);
       conn = DriverManager.getConnection(url,user,passwd);
       int op = 0;
       //插入
       if (op == 0) {
         PreparedStatement ps = conn.prepareStatement("insert into tb_file values (?,?)");
         ps.setString(1, "aaa.exe");
         InputStream in = new FileInputStream("d:/aaa.exe");
         ps.setBinaryStream(2,in,in.available());
         ps.executeUpdate();
         ps.close();
       }
       else {
         //取出
         PreparedStatement ps = conn.prepareStatement("select * from   tb_file where filename = ?");
         ps.setString(1, "aaa.exe");
         ResultSet rs = ps.executeQuery();
         rs.next();
         InputStream in = rs.getBinaryStream("filecontent");
         System.out.println(in.available());
         FileOutputStream out = new FileOutputStream("d:/bbb.exe");
         byte[] b = new byte[1024];
         int len = 0;
         while ( (len = in.read(b)) != -1) {
           out.write(b, 0, len);
           out.flush();
         }
         out.close();
         in.close();
         rs.close();
         ps.close();
       }
     }
     catch (Exception ex) {
       ex.printStackTrace(System.out);
     }
     finally {
       try {conn.close();}
       catch (Exception ex) { }
     }
   }
}



ORACLE的大对象存储有些变态,要无论是Blob,还是CLOB都要求先插入一个空值,然后
查询并锁定这一条记录,获取对Lob的引用再进行填充,网上有太多的例子.我个人认为
这种方法垃圾得连写都不想写了,你可以自己去搜索一下.
这种特别的操作既增加操作的复杂度,又违反了JDBC接口的规范,所以我极力反对这样
使用,如果你和我有同样的观点.那么我提供另一种通用的方法.就是你不用LOB而用
oracle的LONG RAW来代替它们.这样就可以象其它对象一样操作了:

create table tb_file(filename varchar2(255),filecontent LONG RAW);


import java.sql.*;
import java.io.*;

public class BlobTest {

   static String driver = "oracle.jdbc.driver.OracleDriver";
   static String url = "jdbc:oracle:thin:@localhost:1521:test";
   static String user = "system";
   static String passwd = "passwd";
   public static void main(String[] args) throws Exception {
     Connection conn = null;
     try {
       Class.forName(driver);
       conn = DriverManager.getConnection(url, user, passwd);
       int op = 1;
       //插入
       if (op == 0) {
         PreparedStatement ps = conn.prepareStatement("insert into tb_file values (?,?)");
         ps.setString(1, "aaa.exe");
         InputStream in = new FileInputStream("d:/aaa.exe");
         ps.setBinaryStream(2,in,in.available());
         ps.executeUpdate();
         ps.close();
       }
       else {
         //取出
         PreparedStatement ps = conn.prepareStatement("select * from   tb_file where filename = ?");
         ps.setString(1, "aaa.exe");
         ResultSet rs = ps.executeQuery();
         rs.next();
         InputStream in = rs.getBinaryStream("filecontent");
         System.out.println(in.available());
         FileOutputStream out = new FileOutputStream("d:/bbb.exe");
         byte[] b = new byte[1024];
         int len = 0;
         while ( (len = in.read(b)) != -1) {
           out.write(b, 0, len);
           out.flush();
         }
         out.close();
         in.close();
         rs.close();
         ps.close();
       }
     }
     catch (Exception ex) {
       ex.printStackTrace(System.out);
     }
     finally {
       try {
         conn.close();
       }
       catch (Exception ex) {}
     }
   }
}
转自：http://dev.csdn.net/author/axman/1ca2ede425e44dba9ac20c2e262e4fb8.html
 <img src ="http://www.blogjava.net/liuyxit/aggbug/352605.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liuyxit/" target="_blank">三刀流の逆风</a> 2011-06-19 02:02 <a href="http://www.blogjava.net/liuyxit/archive/2011/06/19/352605.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转]inputStream与byte[]互转。</title><link>http://www.blogjava.net/liuyxit/archive/2011/06/19/inputStream_byte.html</link><dc:creator>三刀流の逆风</dc:creator><author>三刀流の逆风</author><pubDate>Sat, 18 Jun 2011 18:01:00 GMT</pubDate><guid>http://www.blogjava.net/liuyxit/archive/2011/06/19/inputStream_byte.html</guid><wfw:comment>http://www.blogjava.net/liuyxit/comments/352604.html</wfw:comment><comments>http://www.blogjava.net/liuyxit/archive/2011/06/19/inputStream_byte.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/liuyxit/comments/commentRss/352604.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/liuyxit/services/trackbacks/352604.html</trackback:ping><description><![CDATA[import   java.io.ByteArrayOutputStream; 
import   java.io.File; 
import   java.io.FileInputStream; 
import   java.io.FileNotFoundException; 
import   java.io.FileOutputStream; 
import   java.io.IOException; 
import   java.io.InputStream; 
import   java.io.OutputStream; 

public   class   FileByteUtil   { 
public   static   void   main(String[]   args)   throws   Exception   { 
File   file=new   File( "f:/test.doc "); 
byte[]   fileByte   =   file2byte(file); 
byte2file(fileByte,   "f:/test2.doc "); 
} 

public   static   byte[]   file2byte(File   f)   throws   Exception   { 
  return   file2byte(f.getPath()); 
} 

public   static   byte[]   file2byte(String   f)   throws   Exception   { 
try   { 
InputStream   in   =   new   FileInputStream(f); 
byte[]   tmp   =   new   byte[512]; 
ByteArrayOutputStream   out   =   new   ByteArrayOutputStream(); 
int   bytesRead   =   in.read(tmp); 
while   (bytesRead   !=   -1)   { 
out.write(tmp,   0,   bytesRead); 
bytesRead   =   in.read(tmp); 
} 
return   out.toByteArray(); 
}   catch   (Exception   e)   { 
e.printStackTrace(); 
} 
return   null; 
} 

//   writes   byte   []   to   a   file 
public   static   void   byte2file(byte[]   data,   String   fn)   throws   Exception   { 
try   { 
OutputStream   out   =   new   FileOutputStream(fn); 
out.write(data); 
out.flush(); 
}   catch   (FileNotFoundException   e)   { 
throw   e; 
}   catch   (IOException   e)   { 
throw   e; 
} 
} 

}<img src ="http://www.blogjava.net/liuyxit/aggbug/352604.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liuyxit/" target="_blank">三刀流の逆风</a> 2011-06-19 02:01 <a href="http://www.blogjava.net/liuyxit/archive/2011/06/19/inputStream_byte.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>修改Tomcat6的默认虚拟目录和增加虚拟目录方法</title><link>http://www.blogjava.net/liuyxit/archive/2011/03/16/346413.html</link><dc:creator>三刀流の逆风</dc:creator><author>三刀流の逆风</author><pubDate>Wed, 16 Mar 2011 09:14:00 GMT</pubDate><guid>http://www.blogjava.net/liuyxit/archive/2011/03/16/346413.html</guid><wfw:comment>http://www.blogjava.net/liuyxit/comments/346413.html</wfw:comment><comments>http://www.blogjava.net/liuyxit/archive/2011/03/16/346413.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/liuyxit/comments/commentRss/346413.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/liuyxit/services/trackbacks/346413.html</trackback:ping><description><![CDATA[修改Tomcat6的默认虚拟目录和增加虚拟目录方法

1.创建目录TOMCAT\conf\Catalina\localhost,并增加名为".xml"的文件,内容为:
<Context path="" docBase="..\..\产品名称" debug="0" reloadable="true" />

2.在TOMCAT\conf\server.xml文件的Host节点,增加
<Context path="" docBase="..\..\产品名称" debug="0" reloadable="true" />
注:这种方式Tomcat6不推荐

3.另增加普通虚拟目录,则应在TOMCAT\conf\Catalina\localhost目录下,增加以虚拟目录名为文件名的xml文件。
如"http://localhost:8080/myapp"虚拟目录，就建一个"myapp.xml",内容为
<Context path="/myapp" docBase="c:\myjsp" debug="0" reloadable="true" crossContext="true">
</Context>
<img src ="http://www.blogjava.net/liuyxit/aggbug/346413.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liuyxit/" target="_blank">三刀流の逆风</a> 2011-03-16 17:14 <a href="http://www.blogjava.net/liuyxit/archive/2011/03/16/346413.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Flex中的Spring--1.Swiz介绍</title><link>http://www.blogjava.net/liuyxit/archive/2010/07/29/flex_air_swiz_spring_j2ee.html</link><dc:creator>三刀流の逆风</dc:creator><author>三刀流の逆风</author><pubDate>Thu, 29 Jul 2010 05:39:00 GMT</pubDate><guid>http://www.blogjava.net/liuyxit/archive/2010/07/29/flex_air_swiz_spring_j2ee.html</guid><wfw:comment>http://www.blogjava.net/liuyxit/comments/327418.html</wfw:comment><comments>http://www.blogjava.net/liuyxit/archive/2010/07/29/flex_air_swiz_spring_j2ee.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/liuyxit/comments/commentRss/327418.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/liuyxit/services/trackbacks/327418.html</trackback:ping><description><![CDATA[      之前一直找Flex的开源框架，某一天发现Swiz，那时才是0.6版，现今Swiz已是1.0RC了。是时候着手分析了解。
   从这篇文章开始，着手深入研究Swiz。

About the Swiz Framework(关于Swiz框架)

Swiz is a framework for Adobe Flex that aims to bring complete simplicity to RIA development. Swiz provides:
Swiz至力与为Adobe  Flex 的RIA应用开发者打造的一个简单方便的框架，它提供：

1.Inversion of Control / Dependency Injection
反转控制/依赖注入

2.Event handing and mediation
事件处理和调配

3.A simple life cycle for asynchronous remote methods
提供异步远程方法的一个简单生命周期

4.A framework that is decoupled from your application code
In contrast to other major frameworks for Flex, Swiz:
相比其它大部分Flex框架减少了你的应用代码，例如：

5.Imposes no JEE patterns on your code
推行与JEE分离的编码方式。

6.No repetitive folder layouts
没有重复啰嗦的目录层次

7.No boilerplate code on your development
开发过程中杜绝公式化的代码

8.Does not require you to extend framework-specific classes
不需要你继承扩展框架的指定类。<img src ="http://www.blogjava.net/liuyxit/aggbug/327418.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liuyxit/" target="_blank">三刀流の逆风</a> 2010-07-29 13:39 <a href="http://www.blogjava.net/liuyxit/archive/2010/07/29/flex_air_swiz_spring_j2ee.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>联机重做日志组损坏的处理</title><link>http://www.blogjava.net/liuyxit/archive/2008/08/14/221929.html</link><dc:creator>三刀流の逆风</dc:creator><author>三刀流の逆风</author><pubDate>Thu, 14 Aug 2008 03:36:00 GMT</pubDate><guid>http://www.blogjava.net/liuyxit/archive/2008/08/14/221929.html</guid><wfw:comment>http://www.blogjava.net/liuyxit/comments/221929.html</wfw:comment><comments>http://www.blogjava.net/liuyxit/archive/2008/08/14/221929.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/liuyxit/comments/commentRss/221929.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/liuyxit/services/trackbacks/221929.html</trackback:ping><description><![CDATA[
		<p>
				<font color="#ff0066">做以后操作前,强烈建议做好备份。</font>
		</p>
		<p>1.查看日志组的使用情况<br />SQL&gt; select * from v$log;<br />2.查日志组对应的物理文件<br />SQL&gt; select member from v$logfile;<br />3.删除损坏的日志组,例如1<br />SQL&gt; alter database drop logfile group 1;<br />4.删除日志成员文件<br />SQL&gt; ! rm /opt/oracle/oradata/means/redo01.log<br />5.创建日志成员文件<br />SQL&gt; alter databasee add logfile group 1 '/opt/oracle/oradata/means/redo01.log' size 300m;<br />6.切换当前日志组<br />SQL&gt; alter system switch logfile;<br />7.多个日志组重建或修改大小，需重复步骤 3 - 6。</p>
<img src ="http://www.blogjava.net/liuyxit/aggbug/221929.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liuyxit/" target="_blank">三刀流の逆风</a> 2008-08-14 11:36 <a href="http://www.blogjava.net/liuyxit/archive/2008/08/14/221929.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>