数据专栏

智能大数据搬运工,你想要的我们都有

科技资讯:

科技学院:

科技百科:

科技书籍:

网站大全:

软件大全:

引用
Summary
In this presentation from InfoQ Day at Java One, Thomas Enebo and Charles Nutter show off the current state of the JRuby project, which has come a long way under their stewardship. The presentation shows compelling demonstrations of how the Ruby language and key Ruby applications can function well on the Java Virtual Machine.
Bio
Charles Nutter of the JRuby development team has been working to redesign JRuby's core interpreter and improve compatibility with Ruby 1.8. Lately he has been focusing on getting key Ruby applications to work. JRuby Project Manager and lead developer, Thomas Enebo is interested in web application development and the Ruby programming language. http://www.infoq.com/presentations/JRuby
编程百科
2020-08-27 13:25:00
相关推荐: ruby动态编程 php 输出缓冲区是可堆叠性探究 discuz在firefox中浏览ajax功能异常 ob_start for ruby ruby 新建对象_Ruby中的面向对象编程 解决*** No rule to make target `/include/ruby.h' 报错 i春秋 “百度杯”CTF比赛 十月场 Backdoor Web渗透中的反弹Shell与端口转发的奇淫技巧
推荐群组: Ruby off Rails
更多相关推荐
Ruby ob_start是PHP中非常重要的一个函数,实现缓存,生成静态页面等等,都离不开ob_start我发现在ruby中没有对应的这个功能,但我利用ruby的block特性实现了它.若有什么问题或建议,欢迎提出。 #title:ob_start for ruby #author:axgle (2006-10-25) #version:1.0 #see:http://php.net/ob_start class Ob require 'stringio' def self.start(&block) $stdout=@buffer=StringIO.new block.call end def self.get_contents $stdout = STDOUT @buffer.rewind @buffer.read end end def ob_start(&block) Ob.start(&block) end def ob_get_contents Ob.get_contents end #使用举例(example): ob_start do #输出缓冲开始 p "aaa" #输出缓冲1 puts "bbb" #输出缓冲2 print File.open(__FILE__).read #输出缓冲3,文件本身的内容(也可以是其他文件,来自数据库的数据等等) #require "other" data=ob_get_contents #获取所有的输出缓冲内容,输出缓冲结束 #以下是标准输出 puts data.size puts data.include?("aaa") puts data.include?("bbb") puts data end
编程百科
2020-08-27 13:24:51
相关推荐: RESTful rails 入门教材 还有没有ruby和rails的好书推荐推荐? rubinius--又一个Ruby的虚拟机 条码检测仪RJS D4000+中文操作说明书 书RJS Templates for Rails 还有录屏的节目 RJS Templates for Rails的thought_log程序 OReilly.RJS.Templates.for.Rails RJS D4000+条码检测仪中文操作说明书
推荐群组: Ruby off Rails
更多相关推荐
Ruby http://oreilly.com/catalog/rjsrails/配合书还有screencast http://peepcode.com/ http://topfunky.com/clients/peepcode/peepcode-001-rjs-preview.mov 相关链接 http://www.railscn.com/viewtopic.php?t=2331 屏播也能赚钱--------Nuby on Rails http://rorcast.blogger2blogger.com/public/articles/2006/10/17/nuby
编程百科
2020-08-27 13:24:43
相关推荐: python写入文件时多余空行问题 solr4.3.1的高亮实现 JE评论字终级版,JE评论框通用版插件,支持Firefox Chrome Opera IE10。beta新版放出,支持菊花文和边框文。 Python3.4如何读取一个文件并打印 利用Python读取和修改Excel文件(包括xls文件和xlsx文件)——基于xlrd、xlwt和openpyxl模块 python 4种读写文件方法 Discuz!X 3.4 任意文件删除漏洞复现过程(附python脚本) 使用python读取数据科学最常用的文件格式
推荐群组: 电脑DIY
更多相关推荐
Python 读取文件 Python用来处理文本,是非常简洁方便的,散仙对Python也是处于入门阶段,今天写了个简单的小脚本来,读取文件,并打印,结果报异常了,总结如下:
第一个异常信息
"SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated 
编程百科
2020-08-27 13:24:22
相关推荐: Hadoop2.2.0的eclipse插件的编译 如何使用jetty部署solr4.8 Struts2+Hibernate+Spring之3大框架集成小例子 Eclipse下安装Python插件问题汇总 windows10上Eclipse和PyDev搭建python开发环境 花了三个月终于把所有的Python库全部整理了!祝你早日拿到高薪! Python 资源大全中文版 Python开发资源速查表
推荐群组: javascript研究小组
更多相关推荐
Eclipse Python Pyhon Dev 散仙,在年前,已经在Eclipse下成功安装过Python的Python Dev插件,具体步骤,可以在散仙的上一篇博客里找到,今天再次装的时候,发现出了一些问题,竟然没有安装成功,散仙特此总结了一下,以免以后再犯类似的错误。

问题症状:在线安装完后,发现在Eclipse的Preferences下,总是找不到安装后的插件,然后去eclipse的plungins目录下,发现明明已经安装了插件,但就是在eclipse里加载不上。
经过一番,查资料,发现有以下的3个原因,会导致,加载失败,如果你也出现了同样的问题,那么证明你至少触发了下面的某一个问题,导致的。
<table class="bbcode"><tr><td>序号</td><td>描述</td><td>解决方法<tr><td>原因一</td><td>JDK版本是JDK7以下的</td><td>安装JDK7,eclipse下的Pyhon插件需要JDK7支持,这一点,官网上有说明<tr><td>原因二</td><td>eclipse的安装路径含有中文路径</td><td>换成英文的路径即可<tr><td>原因三</td><td>本地Win7上安装的Python的msi的版本解释器与Eclipse里面的Pyhon插件版本不一致</td><td>安装时,选择一致的版本即可</table>

以上的原因,关于前二条,散仙就不多说了,重点说下第三个,这个一般人还真不太注意到,我们安装Eclipse的Python Dev插件前,需要安装个Python的本地解释器,这个需要去官网下载,安装成功后,并且配置好环境变量,我们可以在cmd窗口输入pyhon命令进行测试,截图如下:
在eclipse里面的操作,截图如下: 只要上面,三个原因,保证没问题,基本上,都可以安装成功,安装成功后的截图如下: 在eclipse新建一个Hellow World的项目测试一下:
至此,已经成功安装,并测试通过,在eclipse下编写Python脚本非常方便,提示功能也非常nice!
编程百科
2020-08-27 13:24:11
相关推荐: Python从基础到高级经典资料汇总(视频+技术文档) 80个【Python】经典资料(教程+源码+工具)汇总 上万网友力荐的30份Android移动开发技术文档汇总 基于python的微信公众号开发教程 《Python开发技术详解》(原书视频源码) python开发技术详解完整中文版 Python开发技术详解源代码(附高清PDF) 《python开发技术详解》.(周伟,宗杰).[PDF]&ckook;--配套源码
推荐群组: Python
更多相关推荐
Python Python, 是一种面向对象、直译式计算机程序设计语言。Python语法简捷而清晰,具有丰富和强大的类库。它常被昵称为胶水语言,它能够很轻松的把用其他语言制作的各种模块(尤其是C/C++)轻松地联结在一起。常见的一种应用情形是,使用python快速生成程序的原型(有时甚至是程序的最终界面),然后对其中有特别要求的部分,用更合适的语言改写,比如3D游戏中的图形渲染模块,速度要求非常高,就可以用C++重写。本文档适合Python爱好者以及用Python语言进行系统管理、GUI开发、Web开发、数据库编程、网络编程的人员使用。下载附件可长期留存使用!资源名称 资源地址 Python开发技术详解 http://down.51cto.com/data/494831 《Python开发技术详解》随书源代码 http://down.51cto.com/data/494843 Python经典电子书教程汇总 http://down.51cto.com/zt/1123 用Python进行自然语言处理[中文PDF] http://down.51cto.com/data/446752 Python数据结构与算法电子书(英文版) http://down.51cto.com/zt/1596 Python学习手册第四版中文高清版(标签完美版) http://down.51cto.com/data/814478 《Python开发技术详解》(原书+视频+源码) http://down.51cto.com/zt/1575 Python系列视频教程(35集) http://down.51cto.com/zt/3880/1 黑客与逆向工程师的Python编程之道【PDF】 http://down.51cto.com/data/194154 80个Python经典资料(教程+源码+工具) http://down.51cto.com/data/432858 Linux黑客的python编程之道【pdf】 http://down.51cto.com/data/417453 python简明教程(CHM) http://down.51cto.com/data/49213 python编程实例 http://down.51cto.com/data/132975
编程百科
2020-08-27 13:24:04
相关推荐: Python 基础入门教程完整版 想翻译这本书《Dive Into Python》 尝试用Python实现消息传递编程风格 python入门教程 Python基础 2019Python全套视频教程 Python中小学儿童孩子青少年少儿编程入门零基础趣味创意视频教程
推荐群组: Python
更多相关推荐
Python
Python基础教程
 
Python基础教程 Python 简介 Python环境搭建 Python 基础语法 Python 变量类型 Python 运算符 Python 条件语句 Python 循环语句 Python While循环语句 Python for 循环语句 Python 循环嵌套 Python break 语句 Python continue 语句 Python pass 语句 Python 数字 Python 字符串 Python 列表(Lists) Python 元组 Python 字典(Dictionary) Python 日期和时间 Python函数 Python模块 Python 文件I/O Python 异常处理 Python面向对象 Python正则表达式 Python CGI编程 python操作mysql数据库 Python使用SMTP发送邮件 Python多线程 python XML解析 python GUI编程(Tkinter)
编程百科
2020-08-27 13:23:58
相关推荐: 数据挖掘实战视频教程下载 结贴,谢谢关注 面试了一家,大伙给点建议。 数据分析python常用的类库 PYTHON 数据分析常用类库 Python优秀函数库集锦(二) 利用 Python 学习数据挖掘 如何用Python进行大数据挖掘和分析?快速入门路径图!
推荐群组: lucene爱好者
更多相关推荐
Python 发现一个Python数据挖掘类库Pandas,挺好用的。http://pandas.pydata.org/
编程百科
2020-08-27 13:23:42
sweat89 写道
qindongliang1922 写道 sweat89 写道
为什么我装了pydev,Window-》Preference没有出现pyDev.
另外问下,楼主建议新手学2.X 还是3.X
可以对比着学嘛,2.x和3.x还是有一些区别的,都了解了解比较好,需要先安装插件然后才有那个东西的。
插件不就是那个pydev吗 小哥,要jdk7以上才能出来
编程百科
2020-08-27 13:23:19
相关推荐: ruby在windows上如何应用DBI访问mysql ? AliStore概述(Ajax网购站,提供源码供大家参考) 关于Rubinius的一些有趣的地方 Ruby读取INI文件 Ruby的INI文件读取 【原】ruby中使用iniparse解析ini配置文件 ruby修改TXT文件 获取ini文件节下面所有键的内容信息
推荐群组: ror-party
更多相关推荐
Ruby 今天室友叫我帮忙写一个shell修改一个ini配置文件.因为很久没有用awk与sed了,所以只给演示了下原来完成的脚本作一个参考. 无奈他非要帮忙完成一个,那只好用ruby凑合一下吧. 到google一搜,嗯,有现成的ini库,那就用吧: 安装如下(附件) > ruby setup.rb config > ruby setup.rb setup 安装无误,使用irb输入 > require 'inifile' -> true 然后,具体需求是将 [config] type0 = 1 type2 = 2 [other] other =1 增加 type3 = 3 等等 那Ruby代码就是: require 'inifile' o = IniFile::new( "1.txt" ) for i in 4..1000 do o["config"]["type#{i}"] = i end o.write("2.txt") 简洁到一程度,室友直接要求学习ruby... 汗... 记录到这,以后可能会处理ini的时候就用一下这个库吧,多谢它的作者: Gregoire Lejeune
编程百科
2020-08-27 13:22:50
相关推荐: ruby可以做嵌入语言不 获取ruby运行的操作系统版本 java获取本机网卡的MAC地址 Ruby连接数据库 Ruby命令之gem操作 Ruby Rails入门——windows下搭建Ruby Rails Web开发环境 Ruby语言简介 第三章、ruby命令行参数介绍
推荐群组: 电脑DIY
更多相关推荐
Ruby
在看Selenium源代码的时候, 发现了获取操作系统的更好方法
def os @os ||= ( host_os = RbConfig::CONFIG['host_os'] case host_os when /mswin|msys|mingw|cygwin|bccwin|wince|emc/ :windows when /darwin|mac os/ :macosx when /linux/ :linux when /solaris|bsd/ :unix else raise Error::WebDriverError, "unknown os: #{host_os.inspect}" end ) end
 
之前用的方法是假定是windows, 如果不是的话根据异常处理来判断是否是Mac, 很麻烦
编程百科
2020-08-27 13:22:24
相关推荐: 只想与你深发展.. Step by Step-Turning Ruby Files into Java Classes python 与 ruby 之间的区别 Ruby怎样传递参数给子进程(最简单的进程之间通信方法) ruby的线程和进程 服务器之间的命令和数据传输的通信方式 分布式Ruby--杀手级Ruby应用(源于我的Ruby新书) 微服务:通信协议:Restful,RPC(Dubbo、Motan、gRPC)
推荐群组: Hello World 达人
更多相关推荐
Ruby
1.子进程main.rb
ENV["ttt"]="yanzilee9292" system 'ruby t.rb'  
2.子进程t.rb
puts ENV["ttt"]  
3.运行
ruby main.rb

这样控制台会打印出yanzilee9292



参考:  http://ruby.about.com/od/rubyfeatures/a/envvar.htm

Environment variables are variables passed to programs by the command line or the graphical shell. Though there are a number of environment variables that only affect the command line or graphical shell itself (such as PATH or HOME), there are also several that directly affect how Ruby scripts execute.

Accessing Environment Variables from Ruby
Ruby has direct access to environment variables via the ENV hash. Environment variables can be directly read or written to by using the index operator with a string argument. Note that writing to environment variables will only have an effect on child processes of the Ruby script. Other invocations of the script will not see the changes in environment variables.
编程百科
2020-08-27 13:22:13
相关推荐: TheServerSide人物谱之9—Dave Thomas 自用书便宜卖了(java,c++,python,css等) Martin Fowler《企业应用架构模式》迷你电子书 镐头书入手 Ruby完全读书指南 Ruby完全读书指南 转 写给Ruby新人的公开信 (我的Ruby学习经历) "Ruby".say_hello
推荐群组: 极英连大科瑞迪特
更多相关推荐
Ruby 学习一下,可以用来挖墙角。
编程百科
2020-08-27 13:22:06
相关推荐: 在Mac上用ruby连接sqlserver的最佳方法 Ruby From Other Languages linux下mssqlserver中文内容网页显示问题请教 FreeTDS和tiny_tds的关系 windows使用Tiny_tds连接SQLEXPRESS 数据库 rails通过freetds连接sqlserver Ruby on Rails(Ubuntu64位12.04)连接sql-server2005说明 ruby 常用gem安装错误解决方案
推荐群组: D语言
更多相关推荐
Ruby
1. FreeTDS(TDS协议的一种开源实现方式)

FreeTDS  is a set of libraries for Unix and Linux that allows your programs to natively talk to Microsoft SQL Server and Sybase databases.

Technically speaking, FreeTDS is an open source implementation of the TDS (Tabular Data Stream) protocol used by these databases for their own clients. It supports many different flavors of the protocol and three APIs to access it. Additionally FreeTDS works with other software such as Perl and PHP, providing access from those languages as well.
If you are looking for a Java implementation, we refer you to the  jTDS project  on SourceForge.

注意: 没有说 FreeTDS支持windows, 也没有说可以访问mysql或oracle.
 
 
2. tiny_tds(可以理解为FreeTDS的ruby版本实现, java版本的实现叫jTDS)
 
TinyTDS - A modern, simple and fast FreeTDS library for Ruby using DB-Library.
The TinyTDS gem is meant to serve the extremely common use-case of connecting, querying and iterating over results to Microsoft SQL Server databases from ruby. Even though it uses FreeTDS’s DB-Library, it is NOT meant to serve as direct 1:1 mapping of that C API.
The benefits are speed, automatic casting to ruby primitives, and proper encoding support. It converts all SQL Server datatypes to native ruby objects supporting :utc or :local time zones for time-like types. To date it is the only ruby client library that allows client encoding options, defaulting to UTF-8, while connecting to SQL Server. It also properly encodes all string and binary data. The motivation for TinyTDS is to become the de-facto low level connection mode for the SQL Server adapter for ActiveRecord. For further details see the special thanks section at the bottom
注意: tiny_tds可以用于windows
 
编程百科
2020-08-27 13:21:58
相关推荐: Rails的痛苦升级路 Rails安装 新手RoR十分钟初体验Step By Step 玩转Linux:常用命令实例指南 为 gem install 按上翅膀 -- gem-fast 使用Gem-Fast通过Curl来跳墙安装gem gem使用代理安装ruby-debug-base19 为gem install 按上同党: gem-fast
推荐群组: ror-party
更多相关推荐
Ruby Rails 3.0发布那阵儿, 不少为安装Gem苦恼, 这下载Gem的速度太不给力了。 倒不是网速慢, Ruby的NET:HTTP要穿过墙, 翻山过海才能到达rubyforge的服务器。即使网络环境非常好, 也最多有50K的速度。更令人气氛的是, 连个进度条都没有,安装一个gem,往往几十分钟了, 屏幕上一点响应都没有! 老美光顾着自己网速嗖嗖的, 也不照顾我等P民。于是乎, 大家各自发挥自己的能动性, 用下载工具先把Gem下下来, 然后 gem install xxx.1.1.1.gem -l,至于用什么下载,就各有千秋了, 浏览器、wget/curl、迅雷 不过事情还没完, 往往安装一个Gem要有很多依赖, 于是A依赖B1,B2, B1依赖C!,C2. 如果手工下载很真能搞出汗来! --------------------------------------------------------------------------------------------------------------------------------------------------------------- 这些苦恼都将成过去啦, 只要你系统上安装了curl, 你就可以下载gem-fast, 来加速你的Gem安装!(还有附赠下载进度条显示噢) terminal中输入: gem install gem-fast 如果遇到问题, 想回退到之前的下载模式, 只需:gem uninstall gem-fast即可 一切如你所愿! 项目地址:  http://github.com/dazuiba/gem-fast Bug Track:  http://github.com/dazuiba/gem-fast/issues 附赠截图:
编程百科
2020-08-27 13:21:49
也需要考虑具体的应用,语言和框架还是非常通用的,学习它们的目的也是为了做具体的应用。举个例子说明:如果您是一位企业ERP的开发人员,考虑到OpenERP是个非常不错的开源ERP,使用Python开发的,那么可能学习Python就是一个比较好的选择了。 另外Python比较合适做Linux系统的脚本开发,仅供参考。
编程百科
2020-08-27 13:21:40
相关推荐: 骂一骂Ruby 看gen_tcp driver源码学写erlang driver 基于文本比较的搜索 - C语言实现(有注释) 深入理解Ruby语言中的String(1) json and string (Ruby) Ruby语言简介 深入理解Android之Gradle Ruby:String转Time
推荐群组: D语言
更多相关推荐
Ruby Ruby语言中的String是mutable的,不像java、C#中的String是immutable的。比如str1="abc" str2="abc"   在java中,对于字面量的字符串,jvm内部维持一张表,因此如果在java中,str1和str2是同一个String对象。而在Ruby中, str1和str2是完全不同的对象。同样,在java中对于String对象的操作都将产生一个新的对象,而Ruby则是操纵同一个对象,比如: str="abc" str.concat("cdf")   此时str就是"abccdf"。Ruby对String是怎么处理的呢?我们只谈谈c ruby中的实现,有兴趣的先看看这篇文章《管窥Ruby——对象基础》。在ruby.h中我们可以看到String对象的结构,Ruby中的对象(包括类也是对象)都是一个一个的struct,String也不能例外: struct RString { struct RBasic basic; long len; char *ptr; union { long capa; VALUE shared; } aux; }; //ruby.h  显然,len是String的长度;ptr是一个char类型的指针,指向实际的字符串;然后是一个联合,这个稍后再说。如果你看看ruby.h可以发 现,几乎所有定义的对象结构都有一个struct RBasic。显然,struct RBasic包含由所有对象结构体共享的一些重要信息的。看看RBasic: struct RBasic { unsigned long flags; VALUE klass; };   其中的flags是一个多用途的标记,大多数情况下用于记录结构体的类型,ruby.h中预定义了一些列的宏,比如T_STRING(表示struct RString),T_ARRAY(表示struct RArray)等。Klass是一个VALUE类型,VALUE也是unsigned long,可以地将它当成指针(一个指针4字节,绰绰有余了),它指向的是一个Ruby对象,这里以后再深入。   那么联合aux中的capa和shared是干什么用的呢?因为Ruby的String是可变的,可变意味着len可以改变,我们需要每次都根据len的 变换来增减内存(使用c中的realloc()函数),这显然是一个很大的开销,解决办法就是预留一定的空间,ptr指向的内存大小略大于len,这样就 不需要频繁调用realloc了,aux.capa就是一个长度,包含额外的内存大小。那么aux.shared是干什么的呢?这是一个VALUE类型, 说明它是指向某个对象。aux.shared其实是用于加快字符串的创建速度,在一个循环中:   ruby 代码   whiletruedo重复 a="str"#以“str”为内容创建字符串,赋值给a a.concat("ing")#为a所指向的对象添加“ing” p(a)#显示“string” end   每次都重新创建一个"str"对象,内部就是重复创建一个char[],这是相当奢侈,aux.shared就是用于共享char[],以字面量创建的字符串会共享一个char[],当要发生变化时,将字符串复制到一个非共享的内存中,变化针对这个新拷贝进行,这就是所谓的“copy-on-write"技术。解释了String的内部构造,貌似还没有介绍String是怎么实现mutable,我们写一个Ruby扩展测试下,我们想写这样一个Ruby类:   ruby 代码 classTestdefteststr="str"str.concat("ing")endend   对应的c语言代码就是:   cpp 代码 #include #include"ruby.h"staticVALUEt_test(VALUEself){ VALUEstr;str=rb_str_new2("str"); printf("beforeconcat:str:%p, str.aux.shared:%p,str.ptr:%s"n",str,(RSTRING(str)->aux).shared,RSTRING(str)->ptr); rb_str_cat2(str,"ing"); printf("afterconcat:str:%p,str.aux.shared:%p,str.ptr:%s"n", str,(RSTRING(str)->aux).shared,RSTRING(str)->ptr);returnself; } VALUEcTest; voidInit_string_hack(){ cTest=rb_define_class("Test",rb_cObject); rb_define_method(cTest,"test",t_test,0); }//string_hack.c   rb_define_class函数定义了一个类Test,rb_define_method将t_test方法以test的名称添加到Test类。在t_test中,通过rb_str_new2每次生成一个RString结构,然后通过rb_str_cat2将str与"ing"连接起来,添加了一些打印用于跟踪。利用mkmf产生Makefile,写一个extconf.rb   ruby 代码 require'mkmf'create_makefile("string_hack");   执行ruby extconf.rb,将产生一个Makefile,执行make,生成一个string_hack.so的链接库。扩展写完了,通过ruby调用:   ruby 代码 require'string_hack"t=Test.new(1..3).each{|i|t.test}   输出: before concat: str:0x40098a40, str.aux.shared:0x3, str.ptr:str after concat: str:0x40098a40, str.aux.shared:0x8, str.ptr:string before concat: str:0x40098a2c, str.aux.shared:0x3, str.ptr:str after concat: str:0x40098a2c, str.aux.shared:0x8, str.ptr:string before concat: str:0x40098a18, str.aux.shared:0x3, str.ptr:str after concat: str:0x40098a18, str.aux.shared:0x8, str.ptr:string   从结果可以看出,在str concat之前之后,str指向的位置没有改变,改变的仅仅是str中ptr指向的字符串的值,看看rb_str_cat2函数的实现就一目了然了:   cpp 代码 VALUErb_str_cat(str,ptr,len)VALUEstr; constchar*ptr; longlen; { if(len<0){rb_raise(rb_eArgError,"negativestringsize(orsizetoobig)"); } if(FL_TEST(str,STR_ASSOC)) { rb_str_modify(str); REALLOC_N(RSTRING(str)->ptr,char,RSTRING(str)->len+len); memcpy(RSTRING(str)->ptr+RSTRING(str)->len,ptr,len); RSTRING(str)->len+=len; RSTRING(str)->ptr[RSTRING(str)->len]='"0'; /*sentinel*/ returnstr; } returnrb_str_buf_cat(str,ptr,len); } VALUErb_str_cat2(str,ptr)VALUEstr; constchar*ptr; { returnrb_str_cat(str,ptr,strlen(ptr)); } //string.c
编程百科
2020-08-27 13:21:23
嗯当然可以嵌入用。有些游戏引擎还就是拿Ruby当嵌入脚本用的。老文章例如这篇 http://metaeditor.sourceforge.net/embed/ 没有Context之类的对象,你需要的是一些全局函数。嗯这也是MRI不适合嵌入的一个方面 = =
编程百科
2020-08-27 13:21:13
不错,还是ubuntu10.04的系统。看来又会出现一个翻qiang工具了,可惜又得封了。
编程百科
2020-08-27 13:20:57
相关推荐: ruby文件操作大全 《无处不Ruby》系列之批量复制目录到指定文件夹 在给定路径中搜索符合给定模式的文件并进行归档 Ruby递归显示文件夹及子文件夹内所有文件 Ruby 获取某个目录下的所有文件及文件夹 ruby 获取文件目录 使用RUBY遍历目录下的所有文件 读取文件夹下所有的文件名称(包含后缀名)并按修改时间先后顺序排列
推荐群组: emacs
更多相关推荐
Ruby
1. 搜索文件夹
 
  @directory_path = "C:\\test\\" if File.directory? @directory_path Dir.foreach(@directory_path) do |file| if file!="." and file!=".." and file!=".svn" and (File.directory?(@directory_path+file)) puts file end end end  
 
2.搜索文件
 
  Find.find("C:\\test\\dir1") do |path| if FileTest.directory?(path) if File.basename(path)[0] == ?. Find.prune else next end else puts "Filename : " + File.basename(path) end end  
 
3. 按行读取文件
 
  File.open("C:\\test\\dir1\\filename", "r") do |file| file.each_line do |line| puts line end end  
 
编程百科
2020-08-27 13:20:49
select*from爱 写道
哥很好奇,为什么你的代码里面不用繁体字 因為這是在家里寫的
编程百科
2020-08-27 13:20:22
orcl_zhang 写道
这个会不会覆盖掉其他方法?
而且会增加很多无用的方法吧。 1.当然不会。。因为是在methodmissing执行时候才能定义方法的 比如A.new.find_by_name("Hooopo"),执行过程是这样的: 第一次执行:这个方法不存在->执行method missing->定义方法find_by_name 第二次执行:直接调用find_by_name 2.拿find_by_database_colum这个需求来说,数据库字段个数是有限的。需要使用find by的场景更是有限的,一般就是find by id/name/uid等
编程百科
2020-08-27 13:19:57
chloerei 写道
我觉得这些只是很表面的区别,真正的区别是解决问题的思路。不过我不懂python就无法比较了。 说滴对,还在继续总结,在后面会有解决问题的区别
编程百科
2020-08-27 13:19:49
相关推荐: 关于Lazy与proxy的问题,怎样理解合适? 学习Spring必学的Java基础知识(2)----动态代理 关于 rails 的扔remote_ip Ruby学习笔记二:使用Ruby实现通过Proxy的方式请求网页 让Net::HTTP自动使用代理 Ruby中 gem proxy代理设置方法 爬虫自动更换代理 RUBY学习笔记二:使用RUBY实现通过PROXY的方式请求网页
推荐群组: 高级语言虚拟机
更多相关推荐
Ruby 拜和谐的大防火墙所赐,调用微薄,人人等国外克隆网站的api需要用代理,而老外写的第3方lib通常没有考虑代理支持。一个小技巧,只要这些lib是用Net::HTTP来访问的,那么只要用一段小代码就能自动切换到Net::HTTP::Proxy,而无需改动原始代码: #这里从环境变量读取,可以改成从配置文件读取 if ENV['http_proxy'] module Net class << HTTP alias :old_new :new def new(address, port = nil) proxy = URI.parse(ENV['http_proxy']) Net::HTTP::Proxy(proxy.host, proxy.port, proxy.user, proxy.password).old_new(address, port) end end end end
编程百科
2020-08-27 13:19:37
准备的来说 a点的self是一个eigenclass,在(此书有PDF下载)中的257页,有详细的说到了eigenclass在class << self 这种语法,定义的单键方法,而非实例方法. 我上面打开class说话有点错误 p Kitty.singleton_methods # > [:hello]
编程百科
2020-08-27 13:19:26
少了静态类型倒也罢了。haskell的类型系统确实安全,但是程序员却容易被古怪的类型错误困扰,不知所错。还不如用动态类型,一跟踪调试就知道了。ruby应用monad最大的问题是缺乏do notation。bind套bind,closure套closure很容易让人晕菜。ruby号称善于dsl,但是就是这个do notation的语法就模仿不出来。 具体应用monad到某一个领域倒是可以的。比如俺的rparsec。只要不要去搞monadic combinator这种高难度冲浪就好了。
编程百科
2020-08-27 13:18:57
是这个意思,我很少看到其它项目里有人在rescue后面用else,大概就是这个原因吧,感觉没什么价值。
编程百科
2020-08-27 13:18:51
pilipala 写道
ruby的iconv库,已经实现了很好的编码转换功能,
如下例:
require 'iconv' s = ARGV[0] || '汉字' cov = Iconv.new( 'utf-8', 'gbk') p cov.iconv(s) iconv是编码转换,他说的是简繁转换。
编程百科
2020-08-27 13:18:31
相关推荐: ruby 使用imagemagick和RMagick问题 在ruby中如何调用c、c++或java的函数 常见的ruby内部变量 基于 Ruby 谈谈——程序设计语言的通用框架 Ruby系列学习资料(一) 低级语言和高级语言 用Ruby 创建领域特定语言(DSL)
推荐群组: ror-party
更多相关推荐
Ruby 如果ruby性能不能满足,是否能够调用c或者c++?
编程百科
2020-08-27 13:18:01
相关推荐: 大家觉得中科软怎么样啊 继十八大之后慰问那些坚守在变态一线的同志们 昆明的IT如何? HTML 最简易 完美定位 可编辑下拉框 Jboss上部署EJB方法 Jboss下开发ejb应用之一实体bean的应用 EJB和JBOSS的宏观理解 jboss7.1+ejb3.1建立第一个Ejb项目 jboss ejb 简单实例
推荐群组: 电脑DIY
更多相关推荐
JBoss
暂时不讨论。不明白
编程百科
2020-08-27 13:17:52
相关推荐: ActiveMQ VS jBossMQ的选型讨论,给点建议! java如何判断一个文件传输进程是否结束 简述MQ6.0和Weblogic8.1的集成兼谈侦听器的应用 Jboss消息中间件跟IBM MQ的比较 MQ消息队列 IBM WebSphere MQ 系列(一)基础知识
推荐群组: IBM WebSphere专区
更多相关推荐
JBoss
简单说几点.
1 jboss消息以java编写,嵌入到jboss的Server中。客户端目前只看到Java的client。 mq可以支持java ,c等语言。
2 mq 有远程队列。jboss没有.
3 jms消息查看队列里面的消息的时候,需要用QueueBrowser的 getEnumeration () 方法,需要遍历返回队列才能求出长度。当时Mq则有直接获取长度的方法。
4 mq是一个完整,具有更多功能的产品。支持的平台超过80种,涵盖了.net和j2ee环境。 
 
 
j2ee api domcument:
http://java.sun.com/j2ee/1.4/docs/api/index.html
 
mq:
http://www.redbooks.ibm.com/abstracts/sg247583.html
 
编程百科
2020-08-27 13:17:44
相关推荐: 构建一个通用的Action 类,请大家谈谈自己的看法和经验 如何构建一个插件框架 部署ear包出错引发的ClassLoader的思考 Java EE ear包类加载机制解析 主题:JavaEE ear包类加载器机制解析 某Java大佬在地表最强Java企业(阿里)面试总结 【遇见CUDA】要更快,请提高数据传输效率!
推荐群组: JBPM @net
更多相关推荐
JBoss

在介绍EAR包的类加载器机制之前,我们需要了解一下JavaEE中都有哪些类型的包。 一 JavaEE 包的类型
在J2EE中,有ejb-jar包,war包,rar包,car包,ear包,其中经常会用到ejb-jar包,war包,以及ear包,下面分别说明。 1 EJB Jar 包 (.jar) 1.1 作用
Ejb jar 是EJB模块,主要用于实现业逻辑。 1.2 描述符文件
EJB JAR 包的部署描述符文件是ejb-jar.xml,(在EJB3.0中,也可以采用J2SE5.0引入的annoation注解,只不过ejb-jar.xml文件的内容会覆盖annoation) 1.3 内容
EJB JAR 包中通常包括会话bean(包括stateless session bean,statefull session bean),消息驱动bean(MDB),以及Entity bean(在EJB3.0中,采用新的JPA规范来进行数据库访问,所以不存在entity bean,所有的entity 都是pojo) 2 War 包 (.war) 2.1 作用
War 包主要用于打包web应用程序。 2.2 描述符文件
War 包的描述符文件是web.xml,web.xml里可以配置相应的servlet,filter,listener等组件。 2.3 内容
War 包里主要包含jsp,servlet,filter,html,图片等资源。 3 Ear 包 (.ear) 3.1 作用
EAR 包主要用于对JavaEE应用程序进行打包,这样方便交付给客户来使用。 3.2 描述符文件
application.xml 是ear包的描述符文件,application.xml中可以配置一个或者多个web模块,一个或者多个ejb模块,还可以配置资源适配器模块和应用客户端模块。 3.3 内容
EAR 包中包含ejb jar,war包,资源适配器模块(.rar)以及应用客户端模块。 二 JavaEE ear包的类加载机制 1 委托模型
在说ear包的类加载体系之前,首先我们需要知道java中的类加载器的委托模型,java中的类加载器有一个继承体系,子加载器在加载类的时候首先委托父加载器来加载,以此类推,如果所有的父加载器都不能加载,那么子加载器再加载,此时如果子加载器没有发现类文件,则抛出java.lang.ClassNotFoundException.
但是在JavaEE应用中,java默认的委托模型将会被禁用,此时加载类的时候,首先是子加载器加载类,如果子加载器找不到相应的类文件,那么委托给父加载器来加载。 2 JavaEE 类加载机制 2.1 java 类加载器
Java 类加载器体系如下图所示:


2.2 JavaEE 类加载器
JavaEE 中的类加载器是在上图的基础上实现的,如下图所示:


从上图中可以看出,application server类加载器是ejb类加载器的父加载器,ejb包的类加载器是war包的父加载器。
( 注:上图只是大体上的类加载器体系,不同的application server有不同的实现,但是具体的原理是一样的)。 三:实战
上面是关于类加载器的一些理论知识,下面通过一个具体的实例来验证以上理论。 (以下实验均采用jboss 4.2 AS) 1 准备环境
首先在eclipse建立三个工程,如图:



其中Demoejb工程包括两个文件,一个接口,一个实现类,Demoweb中包括一个DemoServlet类。其中我们编写一个测试类DemoUtil类。它里面包含一个静态变量,每次调用demo方法,都将count加一。具体的代码如下:

Demoear application.xml 内容: Demoear Demoweb.war /Demoweb Demoejb.jar


DemoUtil 类:
package com.yuquan.util; /** * @author yuquan * @createTime Apr 11, 2009 3:47:45 PM */ public class DemoUtil { private static int count ; public static int demo() { return count++; } }

Demoejb project
DemoService 代码: package com.yuquan.service; import javax.ejb.Remote; /** * @author yuquan * @createTime Apr 6, 2009 1:08:41 PM */ @Remote public interface DemoService { public String execute(); public void print(); }


DemoServiceImpl 代码: package com.yuquan.service; import javax.ejb.Remote; import javax.ejb.Stateless; import org.jboss.annotation.ejb.RemoteBinding; import com.yuquan.util.DemoUtil; /** * @author yuquan * @createTime Apr 6, 2009 1:10:24 PM */ @Stateless @Remote(DemoService.class) @RemoteBinding(jndiBinding="DemoServiceImpl") public class DemoServiceImpl implements DemoService { /* (non-Javadoc) * @see com.xmu.eartest.DemoService#execute() */ @Override public String execute() { return String.valueOf(DemoUtil.demo()); } @Override public void print() { ClassLoader loader = DemoUtil.class.getClassLoader(); while(loader !=null){ System.out.println("Demoservice print :::"+loader); loader = loader.getParent(); } } }



Demoweb project
DemoServlet 代码:
package com.yuquan.action; import java.io.IOException; import java.io.PrintWriter; import java.util.Arrays; import java.util.Hashtable; import java.util.List; import javax.naming.Context; import javax.naming.InitialContext; import javax.naming.NamingException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.yuquan.service.DemoService; import com.yuquan.service.DemoService2; import com.yuquan.util.DemoUtil; /** * @author yuquan * @createTime Apr 6, 2009 1:25:44 PM */ public class DemoServlet extends HttpServlet { private Context cxt; @Override public void init() throws ServletException { super.init(); initContext(); } @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { DemoService service = (DemoService) getRemoteServieWithJndiName("DemoServiceImpl"); System.out.println("service classloader is : "+service.getClass().getClassLoader()); System.out.println("DemoService classloader is : "+DemoService.class.getClassLoader()); System.out.println("After the web being invoked, the static value is : " + DemoUtil.demo()); System.out.println("After the ejb being invoked, the static value is : " + service.execute()); System.out.printf("Ejb print %s\n","---------------------"); service.print(); System.out.printf("web print %s\n","---------------------"); this.print(); PrintWriter out = resp.getWriter(); out.print("You have done the ear demo,pls see the console,and find the result! ^_^"); } private Object getRemoteServieWithJndiName(String name) { Object o = null; try { o = cxt.lookup(name); } catch (NamingException e) { // TODO Auto-generated catch block e.printStackTrace(); } return o; } private void initContext() { Hashtable environment = new Hashtable(); environment.put(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory"); environment.put(Context.URL_PKG_PREFIXES, "org.jboss.naming"); environment.put(Context.PROVIDER_URL, "localhost:1099"); try { cxt = new InitialContext(environment); } catch (NamingException e) { e.printStackTrace(); } } private void print(){ ClassLoader loader = DemoUtil.class.getClassLoader(); while(loader !=null){ System.out.println("DemoServlet print ::: "+loader); loader = loader.getParent(); } } }



2 实验一 2.1 结构
Demoejb.jar :
com/yuquan/service/DemoService.class
com/yuquan/service/DemoServiceImpl.class
com/yuquan/util/DemoUtil.class

Demoweb.war 包
META-INF/
WEB-INF/classes/com/yuquan/action/DemoServlet.class
WEB-INF/lib
WEB-INF/web.xml
Index.jsp

Demoear 包

此时DemoUtil.class打包到了Demoejb.jar包中,Demoweb.war包中没有DemoUtil类。 2.2 结果 17:47:51,187 INFO [STDOUT] service classloader is : WebappClassLoader delegate: false repositories: /WEB-INF/classes/ ----------> Parent Classloader: java.net.FactoryURLClassLoader@d85409 17:47:51,187 INFO [STDOUT] DemoService classloader is : org.jboss.mx.loading.UnifiedClassLoader3@19a82ee{ url=file:/E:/java/file resource/jboss-4.2.1.GA/jboss-4.2.1.GA/server/default/tmp/deploy/tmp34440Demoear.ear ,addedOrder=48} 17:47:51,187 INFO [STDOUT] After the web being invoked, the static value is : 0 17:47:51,203 INFO [STDOUT] After the ejb being invoked, the static value is : 1 17:47:51,203 INFO [STDOUT] Ejb print 17:47:51,203 INFO [STDOUT] --------------------- 17:47:51,203 INFO [STDOUT] Demoservice print :::org.jboss.mx.loading.UnifiedClassLoader3@19a82ee{ url=file:/E:/java/file resource/jboss-4.2.1.GA/jboss-4.2.1.GA/server/default/tmp/deploy/tmp34440Demoear.ear ,addedOrder=48} 17:47:51,203 INFO [STDOUT] Demoservice print :::org.jboss.system.server.NoAnnotationURLClassLoader@1632c2d 17:47:51,203 INFO [STDOUT] Demoservice print :::sun.misc.Launcher$AppClassLoader@18d107f 17:47:51,203 INFO [STDOUT] Demoservice print :::sun.misc.Launcher$ExtClassLoader@360be0 17:47:51,203 INFO [STDOUT] web print 17:47:51,203 INFO [STDOUT] --------------------- 17:47:51,203 INFO [STDOUT] DemoServlet print ::: org.jboss.mx.loading.UnifiedClassLoader3@19a82ee{ url=file:/E:/java/file resource/jboss-4.2.1.GA/jboss-4.2.1.GA/server/default/tmp/deploy/tmp34440Demoear.ear ,addedOrder=48} 17:47:51,203 INFO [STDOUT] DemoServlet print ::: org.jboss.system.server.NoAnnotationURLClassLoader@1632c2d 17:47:51,203 INFO [STDOUT] DemoServlet print ::: sun.misc.Launcher$AppClassLoader@18d107f 17:47:51,203 INFO [STDOUT] DemoServlet print ::: sun.misc.Launcher$ExtClassLoader@360be0


从运行的结果可以看出war包以及ejb包中用到得DemoUtil类都是由jboss的 org.jboss.mx.loading.UnifiedClassLoader3 来加载的。我们看到DemoUtil类的count静态域变为了1,这是因为DemoServlet用到得DemoUtil类,其实是由ejb 包加载器 UnifiedClassLoader3 加载的,所以ejb,web调用后,count值变为了1. 这也就说明了 UnifiedClassLoader3 类加载器是war包类加载器( org.apache.catalina.loader.WebappClassLoader ) 的父 加载器.
3 实验二 3.1 结构
实验二中,我们将Demoejb.jar放到Demoweb.war包的lib目录下,其它的和实验一一样。 3.2 结果 18:00:49,609 INFO [STDOUT] service classloader is : WebappClassLoader delegate: false repositories: /WEB-INF/classes/ ----------> Parent Classloader: java.net.FactoryURLClassLoader@7a8ba4 18:00:49,609 INFO [STDOUT] DemoService classloader is : WebappClassLoader delegate: false repositories: /WEB-INF/classes/ ----------> Parent Classloader: java.net.FactoryURLClassLoader@7a8ba4 18:00:49,609 INFO [STDOUT] After the web being invoked, the static value is : 0 18:00:49,625 INFO [STDOUT] After the ejb being invoked, the static value is : 0 18:00:49,625 INFO [STDOUT] Ejb print 18:00:49,625 INFO [STDOUT] --------------------- 18:00:49,625 INFO [STDOUT] Demoservice print :::org.jboss.mx.loading.UnifiedClassLoader3@1d2052b{ url=file:/E:/java/file resource/jboss-4.2.1.GA/jboss-4.2.1.GA/server/default/tmp/deploy/tmp34441Demoear.ear ,addedOrder=49} 18:00:49,625 INFO [STDOUT] Demoservice print :::org.jboss.system.server.NoAnnotationURLClassLoader@1632c2d 18:00:49,625 INFO [STDOUT] Demoservice print :::sun.misc.Launcher$AppClassLoader@18d107f 18:00:49,656 INFO [STDOUT] Demoservice print :::sun.misc.Launcher$ExtClassLoader@360be0 18:00:49,656 INFO [STDOUT] web print 18:00:49,656 INFO [STDOUT] --------------------- 18:00:49,656 INFO [STDOUT] DemoServlet print ::: WebappClassLoader delegate: false repositories: /WEB-INF/classes/ ----------> Parent Classloader: java.net.FactoryURLClassLoader@7a8ba4 18:00:49,656 INFO [STDOUT] DemoServlet print ::: java.net.FactoryURLClassLoader@7a8ba4 18:00:49,656 INFO [STDOUT] DemoServlet print ::: org.jboss.mx.loading.UnifiedClassLoader3@1d2052b{ url=file:/E:/java/file resource/jboss-4.2.1.GA/jboss-4.2.1.GA/server/default/tmp/deploy/tmp34441Demoear.ear ,addedOrder=49} 18:00:49,656 INFO [STDOUT] DemoServlet print ::: org.jboss.system.server.NoAnnotationURLClassLoader@1632c2d 18:00:49,656 INFO [STDOUT] DemoServlet print ::: sun.misc.Launcher$AppClassLoader@18d107f 18:00:49,656 INFO [STDOUT] DemoServlet print ::: sun.misc.Launcher$ExtClassLoader@360be0


从运行的结构可以看出,count的值在ejb,web调用后的值都是0,此时DemoUtil在war包和ejb包中的类加载器是不一样的,这也就说明了在JavaEE应用中,web包的类加载器首先加载,如果没有找到相应的class文件,那么再委托给父加载器(ejb包的类加载器)来加载。并且此时注意到Demoservice也是由web类加载器加载的,这是因为此时Demoejb.jar被放在了Demoweb.war包的lib目录,war包类加载器可以找到此类,所以由war包类加载器来加载此类。但是这个时候要注意ejb包中的DemoService类还是由Ejb包的类加载器来加载的,因为此时web类加载器是子加载器,做为父加载器的ejb类加载器是看不到子加载器加载的类的。
从这个例子,我们得出两个个结论:
1)war包类加载器在加载类的时候,首先在自己对应的路劲中查找类(WEB-INF/class,WEB-INF/lib,以及lib包 jar文件META-INF/MANIFEST.MF classpath指定的jar),如果找不到才会委托给父加载器(ejb包类加载器)加载,以此类推,如果所有的父加载器都不能加载,那么就抛出java.lang.ClassNotFoundException.
2)父加载器看不到子加载器加载的类,本例中war包中用到的类加载器加载了DemoService,但是ejb包的类加载器也加载了相应的DemoService类。
4 实验三: 4.1 结构
实验三中,我们将Demoejb.jar包中的DemoUtil.类删除,将其打包到独立的util.jar包中,然后将util.jar包放到Demoweb.war包的lib目录下面,并且同时也需要把util.jar包放到Demoear.ear包的lib目录下。 4.2 结果 18:07:51,343 INFO [STDOUT] service classloader is : WebappClassLoader delegate: false repositories: /WEB-INF/classes/ ----------> Parent Classloader: java.net.FactoryURLClassLoader@14322ba 18:07:51,343 INFO [STDOUT] DemoService classloader is : org.jboss.mx.loading.UnifiedClassLoader3@133650d{ url=file:/E:/java/file resource/jboss-4.2.1.GA/jboss-4.2.1.GA/server/default/tmp/deploy/tmp34442Demoear.ear ,addedOrder=50} 18:07:51,343 INFO [STDOUT] After the web being invoked, the static value is : 0 18:07:51,343 INFO [STDOUT] After the ejb being invoked, the static value is : 0 18:07:51,343 INFO [STDOUT] Ejb print 18:07:51,343 INFO [STDOUT] --------------------- 18:07:51,343 INFO [STDOUT] Demoservice print :::org.jboss.mx.loading.UnifiedClassLoader3@133650d{ url=file:/E:/java/file resource/jboss-4.2.1.GA/jboss-4.2.1.GA/server/default/tmp/deploy/tmp34442Demoear.ear ,addedOrder=50} 18:07:51,343 INFO [STDOUT] Demoservice print :::org.jboss.system.server.NoAnnotationURLClassLoader@1632c2d 18:07:51,343 INFO [STDOUT] Demoservice print :::sun.misc.Launcher$AppClassLoader@18d107f 18:07:51,343 INFO [STDOUT] Demoservice print :::sun.misc.Launcher$ExtClassLoader@360be0 18:07:51,343 INFO [STDOUT] web print 18:07:51,343 INFO [STDOUT] --------------------- 18:07:51,343 INFO [STDOUT] DemoServlet print ::: WebappClassLoader delegate: false repositories: /WEB-INF/classes/ ----------> Parent Classloader: java.net.FactoryURLClassLoader@14322ba 18:07:51,343 INFO [STDOUT] DemoServlet print ::: java.net.FactoryURLClassLoader@14322ba 18:07:51,343 INFO [STDOUT] DemoServlet print ::: org.jboss.mx.loading.UnifiedClassLoader3@133650d{ url=file:/E:/java/file resource/jboss-4.2.1.GA/jboss-4.2.1.GA/server/default/tmp/deploy/tmp34442Demoear.ear ,addedOrder=50} 18:07:51,343 INFO [STDOUT] DemoServlet print ::: org.jboss.system.server.NoAnnotationURLClassLoader@1632c2d 18:07:51,343 INFO [STDOUT] DemoServlet print ::: sun.misc.Launcher$AppClassLoader@18d107f 18:07:51,343 INFO [STDOUT] DemoServlet print ::: sun.misc.Launcher$ExtClassLoader@360be0


从运行结果来看,ejb包中所用的DemoUtil类是有jboss的UnifiedClassLoader3加载的,而DemoServlet中用到得DemoUtil类是由WebAppClassLoader加载的。
注意:如果此时在Demoear.ear的lib包中不放置util.jar包,那么EJB中将无法加载到此类,这也说明了父加载器是看不到子加载器加载的类的。 四:结论
1 子加载器可以看到父加载器加载的类,但是父加载器看不到子加载器加载的类,比如实验一中,DemoServlet中用到得DemoService类就是由org.jboss.mx.loading.UnifiedClassLoader加载的。
2 同级的类加载是不能看到对方加载的类的。假如ear包中包括了很多个war包,这些war包中的类是不能互相引用的。
3 java 的默认委托模型在JavaEE 应用的类加载器模型中不再适用。此时首先有war包的类加载加载类,如果war包类加载器不能加载,然后才由ejb包的类加载来加载。
4 jboss4.2 AS 中,类加载器的体系如下:
org.apache.catalina.loader.WebappClassLoader
java.net.FactoryURLClassLoader
org.jboss.mx.loading.UnifiedClassLoader3
org.jboss.system.server.NoAnnotationURLClassLoader
sun.misc.Launcher$AppClassLoader
sun.misc.Launcher$ExtClassLoader
以上的classLoader中,下面的类加载器是上面的父加载器.

需要注意一下单例设计模式。如果我们把一个类设计为单例的,要确保web模块和ejb模块中用到得单例类是同一个类加载器加载的,否则的话web模块和ejb模块的实例是不一样的。
最后,一般我们在打ear包的时候,会把web模块和ejb模块都用到得类放到ear包的lib目录下,这样确保公用类是同一个类加载器加载。
编程百科
2020-08-27 13:17:24
相关推荐: Gef与MVC体系结构 基于浏览器的流程定制工具 web开发助手,拖拽一下就出来一个标签样例,js样例(版本更新到1.5) JBoss教程(学习简明手册) 安装JBoss Tool 出错 JBoss的简单配置 不错的JBoss教程集 小白教程-JBoss的下载以及安装、部署
推荐群组: JBoss SEAM
更多相关推荐
JBoss
duduwoo 的gef教程用gef3.4.2会出错 调色板不正常 jbpm自带的gef3.2.1正常
编程百科
2020-08-27 13:17:16
相关推荐: 金矿还是尾矿?J2EE application client container (ACC) GlassFish中Application Client(应用程序客户端)中使用@EJB Introducing to Spring Framework(中文修订版) Enterprise JavaBeans 3.0 第五版.pdf JBoss EJB 3.0 第二章:引用和注入 在Eclipse中配置JBossIDE开发EJB3.0 jboss EJB 3.0 实例教程 ejb3.0学习之一:无状态会话bean开发
推荐群组: JBoss SEAM
更多相关推荐
JBoss JBoss EJB 3.0 第二章:引用和注入JBoss EJB3.0 RC6 -PFD http://www.jboss.org/jbossejb3/docs/reference/build/reference/en/html/index.html 2 引用和注入 2.2 EJB引用 * @EJB的mappedName()厂商自定,JBoss定义为JNDI的全局名字,忽略其他属性 * 如果@EJB没有指定任何属性: @EJB SomeService myEjbRef; EJB的查找顺序:JAR > EAR -> JBoss。只能有一个,找到多个时抛异常。 * EJB.beanName(),相当于。查找规则同上。“#”开头是相对路径 2.3 @Resource @Resource用来注入JNDI绑定,EJBContext,JMS destinations和connection factories。 对于datasource,JMS destination和conection factories, JBoss使用@resource.mappedName()指定。 @Resource(mappedName="java:/DefaultDS") DataSource ds; @Resource(mappedName="java:/ConnectionFactory") ConnectionFactory factory;
编程百科
2020-08-27 13:16:54
相关推荐: HTTPS双向认证及cxf调用 Howto: 如何使用Liferay 4.2 SSO(cas)功能 Tomcat SSL配置大全 JBoss EJB 3.0 第十章:传输通信加密 使用JBoss AS 7进行SSL加密的EJB调用 JBOSS系列(二) -EJB远程调用-JBOSS的配置 JBoss 系列四:JBoss7/WildFly中EJB调运示例
推荐群组: Android
更多相关推荐
JBoss JBoss EJB3.0 RC6 -PFDhttp://www.jboss.org/jbossejb3/docs/reference/build/reference/en/html/index.html 10 传输 这张解释了客户端怎样和EJB3容器之间通讯, 怎样设置替换的传输方式。传输方式基于JBoss Remoting, 更深层次的例子请参见其文档。 10.1 缺省传输 基于socket的调用层,端口3878. 参见deploy/ejb3.deployer/META-INF/jboss-service.xml。实用设置: jboss.aop:service=AspectDeployer socket://0.0.0.0:3873 org.jboss.aspects.remoting.AOPRemotingInvocationHandler InvokerLocator决定了协议、IP和端口。0.0.0.0表示所有网卡。 Configuration属性指定到了EJB容器的入口: AOPRemotingInvocationHandler. 10.2 加密传输 有时候 你可能希望SSL来加密传输(太需要了)。先生成个keystore吧 10.2.1 生成keystore和 truststore 先 来个公钥私钥对: cd $JBOSS_HOME/server/default/conf/ keytool -genkey -alias ejb3-ssl -keypass opensource -keystore localhost.keystore 别名ejb3-ssl, 密码opensource, 文件名localhost.keystore 导出证书: keytool -export -alias ejb3-ssl -file mycert.cer -keystore localhost.keystore 给客户端导入: keytool -import -alias ejb3-ssl -file mycert.cer -keystore localhost.truststore 10.2.2 设置SSL传输 最简单的方法是定义一个新的Remoting connector: jboss.aop:service=AspectDeployer sslsocket://0.0.0.0:3843 org.jboss.aspects.remoting.AOPRemotingInvocationHandler keystore和密码系统Properties传入jboss: run -Djavax.net.ssl.keyStore=../server/default/conf/localhost.keystore -Djavax.net.ssl.keyStorePassword=opensource 10.2.3 配置EJB实用SSL 缺省连接时socket://0.0.0.0:3873. 使用@org.jboss.annotation.ejb.RemoteBinding来指定SSL: @RemoteBinding(clientBindUrl="sslsocket://0.0.0.0:3843", jndiBinding="StatefulSSL"), @Remote(BusinessInterface.class) public class StatefulBean implements BusinessInterface { ... } 还能指定不同的通讯方式: @RemoteBindings({ @RemoteBinding(clientBindUrl="sslsocket://0.0.0.0:3843", jndiBinding="StatefulSSL"), @RemoteBinding(jndiBinding="StatefulNormal") }) @Remote(BusinessInterface.class) public class StatefulBean implements BusinessInterface { ... } 10.2.4 设定客户端实用truststore 如果你的证书不是授信机构签名的, 你需要用System Properties来制定store和密码: java -Djavax.net.ssl.trustStore=${resources}/test/ssl/localhost.truststore -Djavax.net.ssl.trustStorePassword=opensource com.acme.RunClient
编程百科
2020-08-27 13:16:47
相关推荐: Ejb3.0--1 JBoss EJB 3.0 第一章 EJB池和缓存 GlassFish中Application Client(应用程序客户端)中使用@EJB 中文最新EJB3.0实例教程下载 JBoss下EJB3.0实例教程(黎活明) ejb3.0入门经典教程及源码 Jboss上部署EJB方法 在Eclipse中配置JBossIDE开发EJB3.0
推荐群组: DI
更多相关推荐
JBoss JBoss EJB3.0 RC6 -PFDhttp://www.jboss.org/jbossejb3/docs/reference/build/reference/en/html/index.html 6 EJB 3.0扩展 6.1 @Service EJB @service bean singlone, 没有实例池(独生子,same idea in EJB3.1?) 可以是@Remote和@Local接口,能被客户端访问。多个客户端访问的时候,拿到的是同一个实例。 (用来放系统级别的常量,配置?应该不如分布式缓存快?分布式缓存客户端可用?) 6.1.1 @org.jboss.annotation.ejb.Management 接口 @Service bean还能实现@Management, 包装成天JBoss MBean。 @Management里面定义了Mbean的操作和属性。 ]6.1.2.1 生命周期 @Management可以包含以下方法: void create() throws Exception; //依赖的服务都存在,但是没开始 void start() throws Exception; void stop(); //依赖的服务的不工作 void destroy(); //依赖于它的服务也被销毁 6.1.2.2 @Depends服务依赖 这玩意也能用在session/MDB上面。 @Target({ElementType.TYPE, ElementType.METHOD, ElementType.FIELD}) @Retention(RetentionPolicy.RUNTIME) public @interface Depends { String[] value(); } 可以用在类上面,表示依赖于其他服务。也能用在@Management定义的set方法和成员变量上面。它还能用来注入依赖的服务。 6.2 消息驱动的POJO 参见教程 6.3 异步调用 看例子吧: Test asynchEjb = org.jobss.ejb3.asynchronous.Asynch.getAsynchronousProxy(ejb); asynchEjb.performaHeavyTest(); Future future = Asynch.getFutureResult(asynchEjb); while(!future.isDone){Thread.sleep(100)} //should be future.wait(); int ret = (int)future.get();
编程百科
2020-08-27 13:16:37
相关推荐: 发现JBoss Seam很棒呀!有用Seam做过项目的吗? 选择Seam的十大理由 取舍于得失之间:权衡Java EE 5.0 & Seam & Spring & Yourself java.lang.InstantiationException: org.jboss.seam.jsf.SeamApplicationFactory seam对jsf的控制 jboss-seam(jsf+ejb3)学习日记1 seam与jsf的结合 JBoss Seam without JSF
推荐群组: JBoss SEAM
更多相关推荐
JBoss 学习这两个东西两个多星期了,原来用的是ssh,一个偶然的机会看到了seam,就下了试试,感觉很不错,配置灵活简单。spring为人诟病的就是xml配置太多太烂,最开始我下的appfuse的ssh框架,首先spring自己得一个application。xml,然后配置struts的action一个,竟然晕到还得配置为struts的action配置注入的manager bean,配置xml都要吐了。后来我就自己吧那个为action注入的文件给删除了,写一个超类直接从application取得不就完了,搞得写一个简单的action都得配置两个大xml,万一action不要了,删除也麻烦。我们做的项目的所有bean啊什么的几乎都是一次成形的,即便改也是改动方法,从没说是替换类的,配置这些这些真是让人感觉浪费时间,真怀疑有几个公司是来回变配置的。 从一用seam就感觉比较多我胃口,只是这个 ,seam搭配的东西实在是我不喜欢的,ejb3吧现在还不知道前途怎么样,而且也是重量级的,调试启动慢,还好还可以用Hibernate来带,而且ejb3的语法与Hibernate也差不多,转的时候也好转。但是这个JSF实在是让人太讨厌啦,笨重!不灵活!连个替代品也没有!我一向喜欢的就是服务器做服务器该做的,客户端做客户端该做的,这样我客户端如果是个OCX或者第三方接口我完全都不需要做改动,现在让JSF管的都没什么扩展性啦。 JSF现在连个分页的功能都没有,要不是有人研究出了扩展datamoudle的方式,JSF都不知道会不会把N条记录都给搞下来。 反正现在我想要的好多功能JSF都没找到解决的办法,以前在其他框架里面还可以在JS里面直接写,现在完了,你扩展组件吧,麻烦的要死,写个简单的helloworld什么的组件容易,但我要那个有什么用,写个稍微麻烦的就无从下手,这要是用JS写也就10分钟的事。不知道JSF2.0会不会能灵活一点,讨厌这么死板的东西,要是仍然像这样,还不如去研究Ext。
编程百科
2020-08-27 13:16:19
流程跟申请单的结合还算讲的比较清楚,不过流程扭转不是用process.signal,应该用task.end(transition);process.signal用的roottoken.signal(默认的transition),一般都是用task驱动流程走动的。
编程百科
2020-08-27 13:16:04
相关推荐: Remote Cache, Transaction JBoss5 Clustering Guide (第三部分) JBoss4的Deploy目录中的各个文件的介绍 JBoss 5 Clustering Guide (第二部分) JBoss5 Clustering Guide, 第四部分 JBoss5 Clustering Guide (第三部分) The JBoss 4 Application Server Clustering Guide Clustering Guide (JBossAS5)
推荐群组: JBPM @net
更多相关推荐
JBoss 1.4.2.2 外部的负载分配器不是说了嘛, 外部的东西自己决定平衡策略, 能干啥自己说了算. jboss唯一的要求就是session afinity(stick session), 粘滞session就是说一旦某客户和某cluster node发生了关系, 就要从一而终, 除非一方意外死亡, 否则不能解除关系. (个人觉得特殊需求, 比如报表/大图片/文件等还是需要小二小三存在的) 1.4.3 农场化部署Farming Deployment 在cluster里面部署应用, 最方便的是用farming service. 就是把ear/war/sar热部署到任意node的all/farm目录下, cluster的其他节点会被自动复制过去. 刚加入的node也会在启动时自动加载农场里的应用. 同理, 在一个节点下面删除应用, cluster里面的其它node也会自动删除应用. 注意: 目前(5.0?) 只有第一个加入cluster的node或者热部署的node才能被自动部署. 就是说, 后加入cluster的node其farm目录下的应用不会被传播出去. 这是因为系统不知道这个目录下面的东西是新的还是从别的cluster遗留下来的东西. 改进中. 注意: 只能部署打包过的XXR, 不能是开放的目录结构. 因为传播复制到其他节点是一步一步的, 很可能还没传完那边就开始部署了. (所以你的应用如果前后依赖, 要尽量打成EAR. 记得还有单独部署) 注意: 农场化部署不是原子的. 这个node上出错不耽误其他node上部署. (这种部署失败怎样监控? 是否有集中的地方看警告?) 农场化部署内置在all配置里面, 不用自己折腾. farm-service.xml放在deploy/deploy.last. 自己配置的时候把这个文件复制过去就有这个功能了. (怎么我这没有? 难道还没cluster过吗?) 几个参数解释:略 农场化部署服务是UrlDeployementScanner的扩展, 所以可以可以使用它的所有属性, 比如URLs和ScanPeriod就是继承来的 1.4.4 分布状态复制服务 在cluster环境, 分布状态管理是cluster必须提供的关键服务. 比如有状态的session bean, 这个session状态必须在所有节点间同步, 所以客户端能够得到同样的session状态, 而不管哪个node在服务. 再比如, Entity Bean有时候需要缓存来减少数据库压力. 目前, Jboss提供了三种方式: * HASessionState MBean, 给EJB2.x SessionBean提供session复制和分布缓存服务. 定义在all/deploye/cluster-service.xml * DistributeState MBean 基于HAPartition的遗留服务. 用于后向兼容, 新应用不建议使用. * JBoss Cache可以给http/ejb3 sesion/ejb3 entity提供缓存. 主要的分布状态管理工具. (这玩意号称....可是没见到内存总量限制, 还是我对缓存的理解错了?) oh~my~god~终于进入下一章了~
编程百科
2020-08-27 13:15:59
基于JSP的JSF页面看上去确实头皮发麻,一般来说,基于SEAM的项目会推荐使用Facelets,它是使用JSF的一种全新方式,使用起来非常舒服。
编程百科
2020-08-27 13:15:53