??xml version="1.0" encoding="utf-8" standalone="yes"?> 1.报时型领g造钟型领?/p>
可以用一个比L说明q个问题。领D有两种cdQ一U是报时型领|整个团队都不知道几点了,只有领导知道Q大家就都来问领|领导能够准确地告诉大家几炏V领导在的时候,一切正常。这L理存在两个问题Q一是尽一切正常,但是领导自己会很忙碌、很辛苦Q因为所有的人都来找领导Q所有的事情都需要领导来拍板Q二是如果领g在,大家找不到领|正常的工作马上就会陷入乱,找不到报时的人,大家都不知道几点了,都不知道工作该怎么qӀ?/p>
与此不同Q第二类领导是造钟型领对{领导知道几点了Q但是主要力量不是放在给大家报时上,而是集中力量l大安一个钟Q不自己在不在Q不自p不说Q所有的人只要看看钟q道几点了。让l织有一U自动运行的机制Q这是一个非帔R要的问题。领g需要事必躬Ԍ而应该只x异常、不x正常Q只x例外、不x例行。因为正常的事情、例行的事情Q有制度、有下属,不用领导自己。只有那些超出制度框架之外的事情Q领g就没h来管Q这时候才需要领g自上c?/p>
理首先要把基础的、基本的事情做对。基本的事情是为组l徏立一个自动运行的机制Q把基础的制度徏设落到实处。基理的四化是制度化、标准化、结构化、流E化。通过基础理Q要让组l内的每个成员遇C正常的、例行的事情旉知道该怎么做。这好比是一座大楼的框架和支柱,先把框架和支柱徏l实了,然后才能搞内部装修。规范管理和制度是所有组l的基础Q一切先q的理理念和方法都要徏立在q个基础之上。对于一座大|如果框架和柱子的问题q没有解冻I者就热衷于搞内部装修赶时髦,那将是非常可怕的N?/p>
2.理的三重境?/p>
让组l有一个自动运行的机制Q这是管理的W一重境界。管理的W二重境界是让每个员工都有自动运行的机制。要辑ֈW一重境界,基本途径是制度徏设,靠的是领D的规范能力和掌控能力;要达到第二重境界Q基本途径是动机的Ȁ发,需要综合用W效管理和团队的手D,靠的是领D的价D和激p力?/p>
理的第三重境界Q也是最高境界,是员工的自动q行和组l的自动q行相结合,互相推动Q互怿q。这好比员工不但知道怎样看钟Q还知道怎样调钟和修钟。钟也成了智能钟Q可以根据不同场合、Q务以及不同员工的特点Q选择自己的报时方式和提醒间隔。在q个q程中,文化和队伍的培育与发展成为最关键的问题?/p>
一旦达CW三重境界,那么l织的管理就可以N若轻Q收放自如。做一个闲人领|其实不但是一U能力的考验Q看其能否徏立v自动q行的组l机Ӟ而且更是一U个人境界的考验。ؓ什么这么说呢?我们可以来分析一下?/p>
领导者居中调度、总领全局的时候,要把自己的精力和旉逐渐从具体工作中解脱出来Q要把很多执行层面的事情交给下属d。在q个q程中有一Ҏ肯定的,是下属当中能做得跟领导一栗能让领导完全满意的Z多。有些h能力不行做不好,有些人态度不行做得不主动,有些人思\不一样做得不让领导称心。这个时候挑战就来了Q看着下属不顺|领导怎么办?不能临阵换将Q也不能自己上阵Q不但要接受q个不满意的l果Q而且在下属完成Q务以后,q要l下属奖励和表扬。这U情冉|最考验一个h的心胸的?/p>
每一个管理者都应该学会接受一个不完全满意的结果,学会安排不完全满意的下属d一件让自己不是完全满意的事情。明知道下属会犯错误Q甚臌什么样的具体错误都能预见到Q还是让下属dQ锻g属,培养下属Q容怸属犯错误Q让下属在犯错误中成长,不断改进工作?/p>
在我们的日常工作q程中,l常会遇到很多复杂的问题Q我们怎么能快速解册些问题呢Q这里我要介l的个hl验是“复杂的问题单化”。下面D个刚刚发生的例子来说明q个Ҏ?/p> 最q在做公司ECP升目中引入了Portal中间Ӟ因ؓ大家都对q个Portal的用很不熟悉,所以开发过E中遇到了很多问题。我q个例子是解决其中的一个问?#8220;如果配置PORTAL中的用户信息从LDAP中读?#8221;Q其实这件事是发生在我写些文的前十分钟。下面说一下解决问题的q程?/p> W一步,阅读相关文档Q按照文档中的说明进行配|。结果由于文档不是很详细Q而公怋用的LDAP服务器是微Y的Active Directory所以未能按照文档说明配|成功?/p> W二步,定问题点,q个比较困难Q因Z知道是因为配|的原因q是portal中间件本w对AD的支持不好。所以我们只能猜是我们配置的不正确Q虽然我们是完全按照文档q行的?/p> W三步,扑և我们配置中我们哪里配的不寏V这个更困难了,因ؓ已经无资料可查,只能自己看源码了?/p> W四步,看了半天的源码无果,只能调试了?/p> 说到调试Q而且又是比较复杂的中间品,可能大家惛_的就是用远E调试的方式了。可是这U方法只能查看一下运行时的变量状态,也不能插入自q代码q行试。而且q重启一ơ又是那几分钟过MQ解册个问题可能要花很多的旉?/p> 所以我惛_了另一U方式,搭徏了一个只针对问题点的试环境。在eclipse里新Z一个项目,把我们前期配|的部分拷到目中,写了单元试E序。这个时间我只花了十分钟。运行了一下,发现实不能从LDAP中正读取出人员信息。因为对LDAP不是很熟只好请外援了Q把咱大名顶的安工误来。因为反问题点简化到了就加蝲两个cd启动一个单元测试。所以安工花了十几分钟就把问题搞定了?/p> 故事描述完了Q最后ȝ一下。在一个复杂的环境下调试,其实我们是很隑־快发现问题的。同时环境的加蝲启动q要费很多旉。可是我们在定或猜出问题点的时候,把环境简化到Q只剩下有可能出现的问题地方。可能我们很快就能解军_了。这是我要说的“解决问题之道Q-复杂的问题单化”。有点啰嗦,很少写东ѝ以后还得锻点{这个方法其实我已经用了很多q_说v来简单,希望你能在碰到问题的时候想赯个方法,q能真正的运用它?br /> 最后感谢安工的全力帮助。这U全心帮助他人的_Q永q是我们学习的榜栗?/p>
]]>
Ø 需求范围的控制问题
要做到良好的控制需求至有两个前提Q正理解了客户当前阶段的主q需求(包括Q最高期望和底线Q,其次在需求管理过E中控制节奏?/span>
如何在控刉求范围上掌握节奏的主动权Q?/span>我们l常到的是客户q在屁股后面问进度、要文档、加需求、变更需求;以前也曾l考虑q这个问题:如何扭{q样被动的局面呢Q这U局面的一个特点就是客户在安排我们的工作;如果我们能安排客L工作Q问题就解决的一大部分?/span>
如何让客户听从我们的安排来做事,对不同的客户实应该有不同的ҎQ但我们心里必须C要让他ؓ我所用,而不是被动挨打;有一U方法是Q有节奏的抛l他_多的需求问?/span>,当然q些问题都是你分析的l果而不是^白无故造出来的Q让他忙hQ而且q要让他感觉你兢兢业业的q活?/span>
Ø L会议的问?/span>
理团队免不了开会,安排工作、讨论问题或评审{?/span>
W一什么时候开会?开会比独立沟通更有效Ӟ大家以前没合作过需要通过开会来混个脸熟Q讨论有争议的问题离U交不如面寚w的来到快P无法通过行政命o执行的东西,需要大安过会议来认同?/span>
如何开会?首先为确保参会h有思考的旉Q必d资料提前发给他们Q其ơ会议有明确的议E和目标Q在会议中如果跑题要及时拉回来;会议l束要有基本的会议ȝQ应该有会议U要Qƈ重复宣读一遍;如果参会的h员有比你U别更高的hQ就更需要明会议目标,否则领导都喜Ƣ高谈阔论浪费大家的旉Q好像说的就是本人)?/span>
开会本w没什么,关键是确定明的目标Q让会议q程在可控范围之内?/span>
Ø 旉理的问?/span>
一般的开发工E师旉理重要性不那么明显Q可是作为项目负责h׃同了Q所有项目组成员的工作效率可能都和你的时间安排有养I其实除了从业务上的优先来安排外Q重点就是:影响他h工作的事情优先安排,比如你的目l成员等着你的c下锅的事情优先安排Q再比如评审旉要其他项目组成员配合的优先安排;再用一句白话:不要让h{我。其他能独立完成的事早点晚点你都有百分百的控制力度?/span>
目负责人就是吃苦在前的z,你必L准备工作做好了,让其他h能投入战斗?/span>
Ø 民主与决{的问题
其实我本人ƈ不是个民ȝ人,民主的反面就是低效;但民d以避免犯大错误?/span>
作ؓ目负责不能犹豫不冻I当断断Q否则难以取得项目组成员的认可。提交民主讨论前的决{,在没有把握前可以和组内组外的相关人员独立沟通,拿出一个有讨论价值的Ҏ。民主过E必L查缺补漏而不是推重来,特别是工期紧的项目?/span>
Ø 获得团队成员重的问?/span>
目负责人最值得重的是来自于他能做出好的决{,而好的决{来自于Q经验、灵zR們?/span>
我ƈ不是一个好的领|臛_我没有耐心們Q我q是自q理解和大家分享。首先,要先做哪些需要由目负责人做的工作,比如Q做决策、和客户保持联系、做计划{;其次要成Z解项目所有信息的人;寚w目保持乐观,目负责Z能抱怨或有悲观情l;要有高期望|不要让h们在工作q没有做好的时候就不做了;勇于承认自己犯的错误Q以w作则,大家都不愿干的活你要先干Q比如写文档。M重是靠努力获得的,目负责人必L其他Z出更多?/span>
目理是我们公司M上也要加强的内容Q只有更多h有这斚w的经验ƈ分nl验Q大家才能共同提高?/span>
Ø 从技术上对表q行分组
我们在做业务数据库设计的时候,个h认ؓ首先要从技术上对表q行分组Q下面是个h的标准:
1) 程和交易相关的表:它的特点是记录数保持最,以便快速响应交易需求,q且相关交易主题对象的生命周期比较短Q比如纳E申报表。或者可以称为操作数据库?/span>
2) 归档后的查询表:它的特点是记录数很大,有够多的烦引,关键保持查询速度Q它的特点就是查的多Q改的少Q比如R辆档案表。或者可以称为查询数据库?/span>
3) 提供l分析用的汇总表Q它的特点就是表中存储了很多计算后的数据q且是冗余数据。如果?/span>BIQ这一部分׃用了Q如果自p计ؓ了出报表方便q是需要的Q比如纳E情况归集表。或者可以称为查询分析表
4) 支持cȝ表:q一cL对业务的支持Q包括代码表、配|表、规则表{?/span>
特别?/span>1?/span>2在设计时最好分别进行处理,不要交易数据和查询数据混在一块;如果后箋要分别部|交易服务器和查询服务器麻烦了?/span>
Ø 主键{略
个h在客h有要求的情况下全部用替代健而不是自焉Q自焉是指业务本n的唯一区别Q比如员工工L。而替代健使用GUIDQ这样在有离U业务处理时也能应付?/span>
Ø 替代健中的冗余问?/span>
在用替代健后,有一个问题就是需要频J的查找自然健,个h增加冗余字段自然健也加入关联表中?/span>
Ø 代码理{略
在客h有特别要求的情况下,使用整数来表达代码。ƈ定代码表的{略Q是Z个表l一理q是分别理Q个人徏议用一个表就行了。具体表设计后箋可以和大家分享?/span>
Ø 字符串字典管理策?/span>
我们l常到一个问题,内部一些状态和它的名称的管理;比如审批程中的审核、批准等{,使用字符串字典表l一理。具体表设计后箋可以和大家分享?/span>
Ø 大字D늮理策?/span>
当碰到大字段Ӟ量集中理Qƈ建在一个表I间Q?/span>OracleQ或文gl(SqlserverQ上。后l和大家分n一下关于附件管理的表设计?/span>
Ø 使用视图
个h很少使用视图Q原因就?/span>Powerdesign对视图设计支持不好,但是有几个方面给大家Q所有的Select查询最好从视图索,视图中将相应需要的中文信息l一带出来(比如Q代码相对的名称或一个流E的状态名U等Q;q样l一处理前台需要的昄问题Q在业务层构建对象模型时增加状态名U的属性以保持它;q样做的另一个好处就是减和物理表的耦合性,毕竟一般系l中查询q比修改要多?/span>
Ø 使用标量函数
我们有时有这L需求,要查今天的收入,要查最q?/span>7天的收入Q这时我们可以用标量函数来完成q个工作Qƈ能保证时间以数据库服务器一_当然q有很多其他用途,大家d现?/span>
下面是一个标量函数的声明来去l定日期当月的第一天:
Create function [dbo].[fn_BeginOfMonth](
@DayUTC datetime
)
returns datetime
Ø 使用模版?/span>
用户需要做怼又有微小差别的录入或配置Q可以用模版表来增强用户体验?/span>
Ø 和业务相关的表都包含下列字段
CreatedBy 创徏?/span>
CreatedOn 创徏旉
ModifiedBy 最后修改h
ModifiedOn 最后修Ҏ?/span>
VersionNumber版本?/span>
特别?/span>VersionNumber作ؓ开攑ּ锁的必要字段Q在修改记录时可以通过它来判断用户提交数据Ӟ是否其他人做q改动,以便后箋处理?/span>
暂写q么多,希望大家补充?/span>
无论是什么项目,假设我们已经对客L大概需求做q一些收集,好的客户可能有一些需求文档,差一点的用嘴零散的说q;收到q些信息后,我们如何分析呢?很多W一ơ做需求分析的人,会很自然的将分析后的功能变成数据库的CRUDQ比如:d员工、删除员工、修改员工等Q但q里客户可能要的是员工入职、员工离职、员工异动?/span>
Z化分析过E,我们可以考虑分四步,每一步都建立在前一半之上的?/span>
Ø 识别主题对象
q是分析的第一步,单的Ҏ是将业务斚w的相兛_词进行收集,从中选出相应的名词作Z题对象;以R购税ZQ最后确定ؓ“U税x?#8221;?#8220;E票”?#8220;车辆档案”?#8220;最低计Eh?#8221;?#8220;免征?#8221;{?/span>
识别后再对主题对象的l构性的需求进行分析,说白了就是确定每个主题对象的内容Q以及主题对象间的依赖关p;定l构最初来源于一些客h供的表格Q依赖关p要Ҏ业务分析才能得出?/span>
Ø 识别主题对象上的业务规则
识别Z主题对象Q下一步从规则上描qC务对主题对象的约束,比如Q纳E申报时如何定计税hQ如何确定税率,如何定免税{?/span>
Ø 识别主题对象上的业务程和事?/span>
围绕主题对象它有哪些程Q以及可预见的驱动流E的事g。流E可以分Zc:主题对象从无到有的流E、主题对象生命周期内的业务流E、主题对象生命周期结束的程?/span>
比如一个员工从非员工变成员工,有入职流E;
员工在职内流E就很多Q考勤有关的请假、加班、出差,q有很多异动程Q?/span>
从员工变成非员工Q有职程?/span>
Ҏ一个流E来ȝ事gQ事件分为:pȝ事g和h工事Ӟpȝ事g是机器自动执行的比如Q超时等Q而h工事件是׃互完成的比如Q领导批准请假等?/span>
在分析流E的q程中,逐步完善业务规则和主题对象的l构性需求?/span>
Ø 识别主题对象上的数据分析价?/span>
最后,也是Ch最Ҏ忽视的一点;以上所有的分析更多的站在基本交互业务分析的Q接下来我们应该考虑从管理角度来分析需求,也就是在每一个主题对象上我们能提供哪些有价值的分析报告Q一般意义上的报表)。这样就照顾C客户的管理层?/span>
通过每一步的分析Q就能引出很多需要和客户交流的问题;q样避免了L客户能讲讲需求,可是又不知道要客戯哪方面的内容?/span>
需求分析是一个很大的话题Q这里仅仅是一些提C性的Q希望有心h跟帖完善?br />
声明Q此文章q本h原创Q{自公司的内部论坛Q是公司一的位同事也是我的领导所写,觉得不错转出来与大家共勉?/span>
SELECT * FROM OPENDATASOURCE(
'SQLOLEDB',
'Data Source=q程ip;User ID=sa;Password=密码'
).库名.dbo.表名
WHERE 条g
?/span>sql serverl?/font>->服务->安全?/font>->链接服务器下建立一个具有别名的链接服务器。然后通过以下方式讉KQ?/font>
SELECT * FROM [链接服务器名].库名.dbo.表名
WHERE 条g
需要注意的是徏立链接数据库服务器类型如果选择“SQL server”Q那么链接服务器名称必须用要链接的服务器的在|络中的机器名或IP,如果要用其它别名,可以?/font>WINDOWS\system32\drivers\etc\hosts文g里添加一个别名的映射?/font>
解除SQLLQ?font face="Times New Roman">sqlserver 2005情况Q?/font>
SQL Server L了对lg ‘Ad Hoc Distributed Queries’ ?nbsp;STATEMENT’OpenRowset/OpenDatasource’ 的访问,因ؓ此组件已作ؓ此服务器安全配置的一部分而被关闭。系l管理员可以通过使用 sp_configure 启用 ‘Ad Hoc Distributed Queries’。有兛_?nbsp;‘Ad Hoc Distributed Queries’ 的详l信息,请参?nbsp;SQL Server 联机丛书中的 “外围应用配置?/font>”?/font>
因ؓSQL2005默认是没有开?/font>’Ad Hoc Distributed Queries’ lgQ开启方法如?/font>
EXEC sp_configure 'show advanced options', 1
GO
RECONFIGURE
GO
EXEC sp_configure 'Ad Hoc Distributed Queries', 1
GO
RECONFIGURE
GO
关闭Ad Hoc Distributed QueriesQ?/font>
exec sp_configure 'Ad Hoc Distributed Queries', 0
reconfigure
exec sp_configure 'show advanced options', 0
reconfigure
1Q?/span>?/span>DTCPing.exe工具试两台机器?/span>DTC服务是否可以联通?/font>
2Q?/span>如果有问题检?/span>MSDTC服务是否启动?/span>
3Q?/span>MSDTC依赖?/font>RPC,RPC使用的端口是135,试135端口是否打开.是否有防火墙?如果有先关了防火?/font>. telnet IP 135 如果是关闭的打开?/font>.
4Q?/span>打开“控制面板->理工具->lg服务”Q然后展开“lg服务->计算?/font>->我的电脑”右键属性。选择MSDTC?/font>Tab栏,点击安全性配|按钮,打开H口Q将“|络DTC讉K”选项选中Qƈ?#8220;允许q程客户?#8221;Q?#8220;允许入站”Q?#8220;允许出站”都选中Qƈ选择“不要求进行验?#8221;Q?#8220;启用事务Internet协议Q?/font>TIPQ事?#8221;Q?#8220;启用XA事务”都选中。然后确定即可。(以上选项windows默认不开放,必须配置Q?/font>
5Q?/span>查你的两台服务器是否在同一个域?font face="Times New Roman">. 如果不在同一个域?/font>,是否建立可信任联?/font>.
6Q?/span>如果?font face="Times New Roman">WIN2000,升?/font>SP4
7Q?/span>认MDAC版本?/span>2.6以上,最好是2.8.
8Q?/span>?font face="Times New Roman">SQL server存储q程中用分布式事务Ӟ必须SET XACT_ABORT ON --讄分布式事务如果发生问题主动回滚操?/font>
9Q?/span>可以声明使用BEGIN DISTRIBUTED TRANSACTIONQ如果未明确生明Q在事务块中包含链接服务器的讉KQ?/font>SQL server会自动升U成分布式事务?/font>
解决Ҏ如下Q?/span>
1、选择Tools->GeneralOptions...菜单Q出?span style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px">General Options对话框?/span>
2、从Category中选择DialogV?/span>
3、取消右?span style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px">“Name to Code mirroring”复选框?/span>
Edit: To get OpenGL to build I also had to install libgl1-mesa-dev and freeglut3-dev.
Edit2: Audio required libphonon-dev.
安装以上包后可以正怋用了?/home/{user}保存flash可以正怋用本地文件了
unbantu下没有找到适用所有用LQ也许没有吧。其它操作系l如下?br />
Windows 所有用?
<pȝ › \Macromed\Flash\FlashPlayerTrust
Windows 单个用户:
<应用E序数据 › \Macromedia\Flash Player\#Security\FlashPlayerTrust
Mac OS 所有用?
<应用E序支持 › /Macromedia/FlashPlayerTrust
Mac OS 单个用户:
<应用E序数据 › /Macromedia/Flash Player/#Security/FlashPlayerTrust
但愿看过此文章的其它朋友Q别再和我一样ؓq个问题l了好几天?/p>
以字Wa的ASCIIZQ?int i = 'a'; String iBin = Integer.toBinaryString(i);//二进?String iHex = Integer.toHexString(i);//十六q制 String iOct = Integer.toOctalString(i);//八进?String iWoKao = Integer.toString(i,3);//三进制或M你想要的35q制以下的进?DEC
[集]java中进行二q制Q八q制Q十六进Ӟ十进刉q行怺转换 十进制{成十六进Ӟ Integer.toHexString(int i) 十进制{成八q制 Integer.toOctalString(int i) 十进制{成二q制 Integer.toBinaryString(int i) 十六q制转成十进?Integer.valueOf("FFFF",16).toString() 八进制{成十q制 Integer.valueOf("876",8).toString() 二进制{十进?Integer.valueOf("0101",2).toString()
有什么方法可以直接将2,8,16q制直接转换?0q制的吗? java.lang.Integerc?parseInt(String s, int radix) 使用W二个参数指定的基数Q将字符串参数解析ؓ有符L整数?examples from jdk: parseInt("0", 10) returns 0 parseInt("473", 10) returns 473 parseInt("-0", 10) returns 0 parseInt("-FF", 16) returns -255 parseInt("1100110", 2) returns 102 parseInt("2147483647", 10) returns 2147483647 parseInt("-2147483648", 10) returns -2147483648 parseInt("2147483648", 10) throws a NumberFormatException parseInt("99", 8) throws a NumberFormatException parseInt("Kona", 10) throws a NumberFormatException parseInt("Kona", 27) returns 411787
q制转换如何写(二,八,十六Q不用算?Integer.toBinaryString Integer.toOctalString Integer.toHexString
例一Q?/p>
public class Test{ public static void main(String args[]){
int i=100; String binStr=Integer.toBinaryString(i); String otcStr=Integer.toOctalString(i); String hexStr=Integer.toHexString(i); System.out.println(binStr);
例二Q?/p>
public class TestStringFormat { public static void main(String[] args) { if (args.length == 0) { System.out.println("usage: java TestStringFormat <a number>"); System.exit(0); }
Integer factor = Integer.valueOf(args[0]);
String s;
s = String.format("%d", factor); System.out.println(s); s = String.format("%x", factor); System.out.println(s); s = String.format("%o", factor); System.out.println(s); } }
各种数字cd转换成字W串型:
String s = String.valueOf( value); // 其中 value ZQ意一U数字类型?
字符串型转换成各U数字类型:
String s = "169"; byte b = Byte.parseByte( s ); short t = Short.parseShort( s ); int i = Integer.parseInt( s ); long l = Long.parseLong( s ); Float f = Float.parseFloat( s ); Double d = Double.parseDouble( s );
数字cd与数字类对象之间的{换:
byte b = 169; Byte bo = new Byte( b ); b = bo.byteValue();
short t = 169; Short to = new Short( t ); t = to.shortValue();
int i = 169; b = bo.byteValue();
short t = 169; Short to = new Short( t ); t = to.shortValue();
int i = 169; Integer io = new Integer( i ); i = io.intValue();
long l = 169; Long lo = new Long( l ); l = lo.longValue();
float f = 169f; Float fo = new Float( f ); f = fo.floatValue();
double d = 169f; Double dObj = new Double( d ); d = dObj.doubleValue();
JDK:sun jdk 1.6
开发工Peclipse+flex builder
flex sdk版本: 3.2
应用服务器: tomcat 6.0
blazed:blazeds-turnkey-3.2.0.3978 下蝲地址是:http://flexorg.wip3.adobe.com/blazeds/3.0.x/milestone/3978/blazeds-turnkey-3.2.0.3978.zip
新徏目Q?/p>
{全部环境安装好后,打开装了flex builder(flex 4.0以后叫flash builder?Q选择Flex Development 视图Q新建项目选择Flex Project ,填写新徏目的名Uͼ目存储的目录,在Server Technology标签中的application Server Type选择J2EE,选中Use remote object access service和Create combined Java/Flex project using WTPQ这个一定要记的选上Q选项Q然后Next.如下图:
在第二页中J2EE settingsQTarget runtime如果q没有可以先d一个预先准备后的tomcat环境。然后选择它。在Compiled Flex application location的Out FolderҎ与上面Content Folder相同的WebContentQ注意这个一定要改,否则无法自动~译q去Q调试时览器无法访问。如下图Q?/p>
新徏好项目后Q还要修改一个关键的目属性。将Flex Server标签中的Context Root修改为FirstJavaFlexQ这一块很重要Q在没有配置RemoteObject 的endPoint属性的时候,会用q个Contextȝ译FlexQ,q要注意一下Root URL参数中的端口P因ؓ默认?080,可是如果你用的是blazeds-turnkey包中的tomcat的时候,那个端口h8400记着一定也要改一下。如下图Q?/p>
ph建好目之后Qjava源文件放在src目录下,flex源文件放在flex_src目录下?/p>
接下来就是写代码了。新建好目之后会在flex_src下生成一个FirstJavaFlex.mxml的文件?/p>
我的javacȝ代码如下Q?/p>
view plaincopy to clipboardprint?
package com.java.flex;
public class FirstJavaFlex {
public String helloJavaFlex(String name) {
System.err.println("call java success!");
return "welcome to JavaFlex world: "+name;
}
}
package com.java.flex;
public class FirstJavaFlex {
public String helloJavaFlex(String name) {
System.err.println("call java success!");
return "welcome to JavaFlex world: "+name;
}
}
q个代码也很单吧不多说了?/p>
下面是最关键的一步打开WEB-INF\flex目录中的remoting-config.xml文g在里?/p>
d一D远E目录的注册Q?/p>
<destination id="firstJavaFlex">
<properties>
<source>com.java.flex.FirstJavaFlex</source>
</properties>
</destination>
d完后的remoting-config.xml文g如下Q?/p>
view plaincopy to clipboardprint?
<?xml version="1.0" encoding="UTF-8"?>
<service id="remoting-service"
class="flex.messaging.services.RemotingService">
<adapters>
<adapter-definition id="java-object"
class="flex.messaging.services.remoting.adapters.JavaAdapter"
default="true"/>
</adapters>
<default-channels>
<channel ref="my-amf"/>
</default-channels>
<destination id="firstJavaFlex">
<properties>
<source>com.java.flex.FirstJavaFlex</source>
</properties>
</destination>
</service>
<?xml version="1.0" encoding="UTF-8"?>
<service id="remoting-service"
class="flex.messaging.services.RemotingService">
<adapters>
<adapter-definition id="java-object"
class="flex.messaging.services.remoting.adapters.JavaAdapter"
default="true"/>
</adapters>
<default-channels>
<channel ref="my-amf"/>
</default-channels>
<destination id="firstJavaFlex">
<properties>
<source>com.java.flex.FirstJavaFlex</source>
</properties>
</destination>
</service>
接下来修改FirstJavaFlex.mxmlQ代码如下:
view plaincopy to clipboardprint?
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:Script>
<!--[CDATA[
import mx.rpc.events.FaultEvent;
import mx.controls.Alert;
import mx.rpc.events.ResultEvent;
public function callJava():void {
remoteHello.dd(myName.text);
remoteHello.addEventListener(ResultEvent.RESULT,getRomoteHelloRes);
}
private function getRomoteHelloRes(e: ResultEvent):void{
Alert.show(e.result.toString());
}
private function error(e:FaultEvent):void {
eerrorMsg.text=e.message.toString();
}
]]-->
</mx:Script>
<mx:RemoteObject destination="helloJavaFlex" id="remoteHello" fault="error(event)">
</mx:RemoteObject>
<mx:Button x="338" y="103" label="call java" click="callJava()"/>
<mx:TextInput x="155" y="103" id="myName"/>
<mx:Text x="78" y="105" text="your name:
" height="20" width="74"/>
<mx:Text x="56" y="174" text="error message:" height="20" width="96"/>
<mx:TextArea id="errorMsg" width="256" height="200" x="155" y="173">
</mx:TextArea>
</mx:Application>
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:Script>
<!--[CDATA[
import mx.rpc.events.FaultEvent;
import mx.controls.Alert;
import mx.rpc.events.ResultEvent;
public function callJava():void {
remoteHello.dd(myName.text);
remoteHello.addEventListener(ResultEvent.RESULT,getRomoteHelloRes);
}
private function getRomoteHelloRes(e: ResultEvent):void{
Alert.show(e.result.toString());
}
private function error(e:FaultEvent):void {
errorMsg.text=e.message.toString();
}
]]-->
</mx:Script>
<mx:RemoteObject destination="helloJavaFlex" id="remoteHello" fault="error(event)">
</mx:RemoteObject>
<mx:Button x="338" y="103" label="call java" click="callJava()"/>
<mx:TextInput x="155" y="103" id="myName"/>
<mx:Text x="78" y="105" text="your name:
" height="20" width="74"/>
<mx:Text x="56" y="174" text="error message:" height="20" width="96"/>
<mx:TextArea id="errorMsg" width="256" height="200" x="155" y="173">
</mx:TextArea>
</mx:Application>
最后界面是q样的,如下图:
单解释一下:
界面上有一个TextInput用来输入调用q程javacȝ参数。TextArea用来昄调用不成功的错语信息。Button的click事g用来触发调用q程javaҎ。还有一个在界面上不昄的RemoteObject对象是用来注册远Ejava目标的?/p>
好了q行一下吧?/p>
右键WebContent目录中的FirstJavaFlex.html文g选择Run as->Run on Server.看一下运行结果吧。如下图Q?/p>
点击一下call java 按钮Q看什么什么情况?如下图:
恭喜你成功了Q?/p>
q个例子很简单,但因Z熟,我也是调了好久才成功。容易出错的地址好个Context的问题了。当然也可以在RemoteObject中明声明EndPoint属性,使用相对路径?/p>
<mx:RemoteObject destination="firstJavaFlex" id="remoteHello" fault="error(event)" endpoint="messagebroker/amf"/>
写到这吧,下一准备写写在真实开发中会用到的与springl合的用?/p>
本文来自CSDN博客Q{载请标明出处Qhttp://blog.csdn.net/zk_2000/archive/2009/11/02/4759007.aspx