第一篇:教师专业规范自查材料即自我总结
学习我校《教师专业规范》的自查报告
教师黄剑
通过我对我校《教师专业规范》的学习,使我明白了作为一名职校教师,必须树立“学生为本、师德为先、能力为重、终身学习!”这一理念的重要性。
一、学生为本
尊重学生权益,以学生为主体,充分调动和发挥学生的主动性;遵循中学生身心发展特点和教育教学规律,提供适合的教育,促进学生生动活泼学习、健康快乐成长,全面而有个性的发展。教学中一定要使学生生动活泼地、积极主动地得到发展。
(一)让学生明确教学目标 让学生明确教学目标,这是充分发挥学生主体性的前提。如果学生不明确教学目标,那么,学生在课堂学习中必然是盲目的、被动的。
(二)教学的过程中,注意引导学生主动参与课堂学习心理学研究表明:青少年在学习过程中具有强烈的参与意识。因此,教师要热情鼓励、精心诱导他们最大限度地参与教学过程,给他们以自由选择的权利。如让学生参与体育课的设计到评价的全过程,准备活动指导学生去“带”,教学内容指导学生去“选”,在课堂中放手让学生去“创”。
(三)给学生自由提问的主动权 在数学教学中,通常是教师不断地提问、解析,教师的提问固然能透出学生的思考,但学生的学习总是比较被动的。爱因斯坦曾说:提出一个问题往往比解决一个问题
要重要。因为提出一个问题是创新的开始,也是创新的动力。在数学教学中,我尝试着通过教会学生不断地提问来提高学生主动学习的意识,把提问的主动权交给学生,使他们在课堂上不仅只是听着、答着,而是自主学习的学习者,通过教师的启发和引导,如果学生能主动提出有创见的问题,那说明学生的主体性得到了较好的体现。
二、师德为先
热爱职校教育事业,具有职业理想,践行社会主义核心价值体系,履行教师职业道德规范。关爱职校学生,尊重学生人格,富有爱心、责任心、耐心和细心;为人师表,教书育人,自尊自律,以人格魅力和学识魅力教育感染中学生,做学生健康成长的指导者和引路人。教师应怎样培养自己的良好师德呢?
(一)培养自己良好的心理素养。比如树立开放意识。又如养成合作习惯等等。
(二)培养自己良好的思想素养。
1、教师自觉遵守宪法和社会公德,遵守校规校纪。
2、教师自觉掌握当代社交,精神文明和社会公德的知识,注意礼貌,平等待人等。
3、教师自觉遵守师德规范,有良好的师德行为。
4、教师自觉学习马克思主义,毛泽东思想,邓小平的社会主义理论,三个代表的重要思想,用正确的政治思想武装自己,有坚定正确的政治方向。
三、能力为重
把学科知识、教育理论与教育实践相结合,突出教书育人实践能力;研究中学生,遵循中学生成长规律,提升教育教学专业化水平;坚持实践、反思、再实践、再反思,不断提高专业能力。教师要成为追求真才实学的榜样。教师不能满足于先学于学生,而且要坚持继续学习,坚持终身受教育。随着形势的发展,高科技突飞猛进,让人感到一停止学习,就会落伍。当今的时代,人们只有具备了学习的能力,具备了可持续发展的能力,才能获得生存的社会位置。教师要自身保持一种勤奋学习的能力,还要把这种学习能力无私地传授给自己的学生。
四、终身学习
学习先进中学教育理论,了解国内外中学教育改革与发展的经验和做法;优化知识结构,提高文化素养;具有终身学习与持续发展的意识和能力,做终身学习的典范。培养二十一世纪新型人才,转变教育教学观念迫在眉睫。教师要不断更新自己的知识结构,刻苦钻研业务,认真学习科学文化知识,授业、解惑的同时要为学生创造出积极思维、自我锻炼的机会,只有不断提高自身素质才能适应今后的教学模式。在教学过程中要教会学生学习的方法及途径,减轻学生学习负担,促使学生产生愿意学习的强烈愿望,以培养学生学习能力为根本,能启发学生将所学的知识举一反
三、融会贯通,通过学习新知识,有效的与学过的知识相结合,综合起来去解决问题,以便形成终身学习的自觉性。同时要注重面向全体学生,让学生生动、活泼、主动的发展。因此,教师在教学过程中要为学生建构良好的学习环境,引导启
发他们积极主动思维,努力使全体学生参与课堂教学,让他们真正成为学习的主体。
在今后的工作中,我会继续认真学习先进的职校教育思想,树立终生学习的教育理念。以师德为先,不断丰富个人的生活经历,提高自己的综合素质,把职业教育当成自己的主要事业。以学生为本,尽最大努力成就学生的辉煌。过去的工作,有成功之处,也有不足之处,我想,只要树立坚定而正确的人生信念,就一定会让自己的工作取得较好的效果。
第二篇:规范行医自查总结
***卫生所 规范执业行为自查小结
为了规范我村卫生所执业行为,保障我村群众安全就医,根据上级文件精神,我村卫生所进行了规范执业行为的自查自纠工作,具体总结如下:、医疗机构执业许可、诊疗科目、人员资质
我村卫生所均持有有效的〈〈医疗机构执业许可证〉〉,认真贯彻落实《乡镇卫生院管理办法(试行)》、卫农卫发【2011】61号和《乡村医生从业管理条例》,严格按照核准登记的诊疗科目开展预防、保健和一般医疗诊疗活动。卫生所人员具备相应的执业资格,并严格按注册专业、地点依法执业。我卫生所未进行实验性临床医疗活动。
2、公共卫生服务工作
严格参照并执行山西省卫生厅《关于做好儿童预防接种人员准入工作的通知》(晋卫疾控【2006】4号《关于加强儿童预防接种门诊认定工作的通知》(晋卫疾控【2006】5号)的文件精神,我村卫生所承担预防接种的人员已取得预防接种人员资格证,同时严格按照《预防接种工作规范》的要求,我村卫生所所用疫苗都为县疾控中心统一配送。
3妇幼保健工作
在妇女病普查普治工作上,我卫生所积极配合县妇幼院、乡卫生院做好宣传动员工作。
4、卫生所感染管理工作
我村卫生所严格执行《医院感染管理办法》等法律法规及规章制度。卫生所医务人员按时参加乡卫生院院感染管理知识培训。加深无菌观念,严格执行无菌技术操作规范或流程;卫生所使用的消毒药械、一次性医疗器械和器具都符合国家有关规定;但是,医护人员的自我防护用品和措施及制度都需继续配置完善。
5、不良时件监测报告及双向转诊工作
我所按照《药品不良反应和监测管理办法》的规定,及时对发现的药品不良反应进行报告。落实并严格执行首诊负责制和双向转诊制度,同时做好记录。
6、基本药物制度的落实
我院现在使用的药物都为《国家基本药物目录》中的药物,并接受乡卫生院网上集中采购。按要求做好相关的记录和储存,总之,我所通过此次自查,将有利于以后的工作开展,依法执业,规范执业,确保我村的医疗质量和安全。
第三篇:规范办学自查总结
余姚市辛慧学校规范办学
自查自评报告
根据余教督〔2016〕13号文件《余姚市人民政府教育督导室 余姚市教育局 关于开展2016学年第一学期全市义务教育段学校规范办学行为督查的通知》精神,我校对照《义务教育段学校规范办学行为评估表(试行)》,逐条开展自查,现将自查情况报告如下:
第一部分:学校概况
我校现有学生239人,教职工12人。专任教师12人,大专及以上学历9人,占75%。学校有普通教室8间;有图书室、心理健康辅导室、艺术舞蹈室、体育器材室、体育活动室、少先队活动室等公共用房各一间;有实验室、音乐教室、计算机室、仪器室、美术教室等专用教室各一间。多媒体设备9套,电脑56台,打印机2台,激光多功能一体机3台,学校图书5200册,生均21.8余册。自办学以来连续被评为市3A级平安校园,2015年被确定为浙江省义务段标准化学校。
第二部分:规范办学做法
(一)科学规划,高度重视规范办学工作
学校根据规范办学工作总的要求,理清发展思路,明确学校定位,坚持正确的办学方向,提出了学校要持续、快速、健康的发展目标。坚持面向社会需求,面向教育现代化的办学方针,努力培养德智体美劳全面发展的合格学生,向着“创办特色学校、培育合格人才”的目标奋进,实现我校跨越式发展。
(二)着力改善办学条件,夯实教育教学基础
学校十分注重硬件设施建设,近两年学校建设资金投入累计达100多万元,对学校食堂按B级标准进行了改造,新教学楼一楼投入使用,二楼正在抓紧规划,添置了计算机、多媒体、监控网及音体美劳教学器材,2015年暑期塑胶跑道、塑胶操场建成使用。硬件设备设施的进一步完善,夯实了教育教学基础。使学校的办学条件有了较好的提升。
(三)积淀校园文化,彰显校园软实力
学校抓紧文化载体的建设,着力培植具有本校特色的校园文化精神。
1、环境的绿化、净化。针对学校可供绿化的面积少的情况,尽量把能利用的空间利用起来,创造一片绿,让师生一进校园也能感受到校园的绿意。
2、文化场所建设。运动场、校舍建筑、外墙主色调、走廊、宣传栏等校园的硬件设施逐步规划科学、布局合理,凸现校园建筑文化;开辟班级黑板报,规划班级图书角,开展手抄报、书画展活动;建成校园广播系统,完善校园电子教学网络。
3、校园周边环境整治。整治校门口流动摊点,与公安、工商、城管、文化、社区等单位共同配合,及时搞好学校周边环境的综合治理,使学校周边环境安全、健康。
4、开展各类文化活动。开辟教工活动场所,开展教师趣味活动,定期开展“四节”活动,丰富全体师生的校园文化生活。
5.强化学生养成教育,培养具有良好习惯的学生。养成教育就是培养学生良好的行为习惯,并为以后的学习打下良好的基础。为此我们重视对学生的养成教育,利用班队会、思想品德课、红领巾广播站、国旗下演讲对学生进行品德熏陶。为了保证养成教育经常化,并将养成教育落到实处。学校开展“四项评比活动”,每周一评。评定优胜班集体,在升旗仪式上授予“循环红旗”,并进行公示,每次获得一颗星,期末总评,以星换牌(文明班级牌)。同时采取班主任坐班制,进一步加强学生管理。把行为规范和班主任考核挂钩,调动了师生的积极性,从而使学生的行为规范时时有人抓处处有人管,形成了文明、上进的良好局面。
通过一系列校园文化建设活动的开展,全体师生的精神境界不断提高,师生群体出现了前所未有的勤奋求实、团结向上的新气象。
(四)加强师资建设,打造高素质的教师队伍
学校创造良好的成长环境,促进教师发展。我们通过精心策划各类教研活动,突出教研活动的主题性、针对性和实效性,把每次活动都打造成教师发展的平台;并积极开展课堂教学大练兵、大比武活动和“备课本、说课、评课、命题”等一系列教学基本功比赛,让教师有更多的机会得到锻炼和展示才华的机会,促使骨干教师茁壮成长。
(五)加强学校教育技术装备,不断完善学校办学条件。学校现有实验室1个,实验仪器按《浙江省小学及初中各学科教学仪器设备配备目录》配齐,分组实验能保证4人一组进行试验操作。
学校现有音乐室1个,美术室1个,综合实践室1个,教学仪器室1个,音体美劳教学器材按《浙江省小学及初中各学科教学仪器设备配备目录》配齐。
学校的体育器材设施按《浙江省小学及初中各学科教学仪器设备配备目录》配齐,同时根据学校特色,配置相应的选配器材。
学校建有校园计算机网络系统,校园骨干网入口带宽1Gbps,网络端口出口带宽100Mbps,教学楼、综合楼均有无线和有线网络覆盖,每个教室均配置多媒体设备。学校每个教师、行政办公室均配备办公电脑。
学校拥有100m的环形跑道4道运动场,室外篮球场1个、排球场1个,羽毛球场1个,乒乓球桌3张,体育器材室1个,体育设施能满足体育教学、体育锻炼和大课间活动开展。
(六)根据“六个严格”,不断规范教育教学行为。1.规范课程设置
严格执行课程计划,全面提高教育教学质量。学校全面贯彻落实国家和省定的课程方案、课程计划,严格按照规定开齐课程、开足课时,坚决纠正任何违背教育规律、随意加深课程难度、增减课程和课时、赶超教学进度的现象。做到:坚持按标准课时开课,不随意增减课时;坚持按课程设置开课,不随意增减科目;坚持按课程标准要求教学,不随意提高或降低教学难度;坚持按教学计划把握进度,不随意提前结束课程和搞突击教学;坚持按规定的要求考试,不准随意增加考试次数;坚持健康第一,不挤占体育课、艺术课、班队活动和综合社会实践活动时间,认真开展大课间活动,切实保证学生每天锻炼l小时的体育活动时间。全面贯彻新课标的要求,努力提高教育教学质量。
2.规范作息时间
合理安排作息时间,切实减轻学生过重的课业负担。控制学生在校学习时间6小时,合理安排学生的学习和生活,坚决纠正随意侵占学生休息时间的做法,切实保障学生的休息权利。保证学生每天睡眠时间不少于10小时。学校出台了一系列规章制度,严令不得占用学生法定休息时间、午间休息和活动时间进行加班加点或组织集体补课。3.着力规范作业管理(1)力求作业布置规范
强调教师设计作业必须根据《课程标准》和教材的要求,挑选具有科学性、典型性、启发性的作业内容和形式。凡布置给学生的作业,教师应亲自尝试一遍,了解作业的难易程度和容易出现的问题,以利于对学生进行指导。布置作业要提出格式要求,强调书写规范,独立按时完成,培养学生良好的作业习惯。布置作业份量要适当,能在课堂完成的作业不布置到课外去做,每天课外作业总时间三至六年级不超过1小时,低年级不留书面家庭作业;难易要适中,作业的难度以中等学生的水平为准,也要有利于培养“尖子”,适当照顾后进生,提倡因人布置弹性作业。
(2)力求作业批改规范
要求批改次数和学生作业的次数一致,错误有指正,有改错。按要求布置的课内、课外书面作业要全批全改,无漏批、批错现象,批改率100%,提倡当天的作业当天批改(除作文外)。要求各学科作业实行“等级+评语+日期”的批改方法,等第、评语和批改日期要书写规范。
(3)力求作业反馈规范
教师要督促学生及时上交作业,并及时批改,从而了解学生知识掌握情况和学习上存在的漏洞和缺陷,并针对作业中出现的漏洞和缺陷及时采取补救措施。
(4)建立班级各学科作业布置协商机制。每天由班主任负责协调、控制课外作业量,并有作业布置记录单,确保每生每天课外作业学科平衡、总量合理。
(5)建立对学生作业本批改质量情况的定期检查(每月一)与不定期抽查制度。
(6)每学期开学初与教师签订“减负”责任状,做到减负不减质。4.规范教学实施
学校非常重视课堂教学管理,“向课堂要质量,向四十分钟要质量”。教学常规管理是学校提高教学质量的保证。为此,学校制定了教师备课、上课、听课、作业布置和批改、考核评价的基本要求,教师能按要求进行备课、上课、听课、作业布置和批改、考核评价。学校根据教师素质发展的要求,积极开展校本课程培训,作业规范培训等促进教师专业发展。教师听课节数能达到规定的要求。5.规范招生考试
加强考试管理,严格规范日常考试,严格规范考试科目与次数,对平时的检测也予以规范,严禁公布学生考试成绩及按成绩排列名次,更不得按考试成绩给学生安排座位等。实行学生学业成绩与成长记录相结合的多元化评价方式评价学生。
6.规范教师行为
认真贯彻《中小学教师职业道德规范》,强化教书育人职责和岗位要求。加强教师职业行为管理,禁止有偿家教。加强对教师的管理,严禁教师对学生实行有偿家教、有偿补课,教师也不得组织学生统一征订教辅材料。对有偿家教及统一征订教辅材料的教师,采取“一票否决”的办法予以处理,学期考核直接定为不合格或解聘合同。
(七)安全工作常抓不懈,保障学校教育教学工作顺利进行。
教学是第一要务,安全是第一责任。我校重视强化学校安全管理,确保师生安全。认真落实学校安全工作责任制,完善校内各项安全管理制度和安全应急机制,建立重大突发事件应急预案,切实加强演练,提升应急处置能力。加强了安全检查和隐患排查,切实落实各项安全防范措施,及时整治和消除各类安全隐患。加强安全教育,增强实效性,提高师生逃生避险和自救能力。认真做好卫生防疫工作,防止传染病流行。
学校楼层楼梯口均安装应急照明灯,并有专人定期检修,保证正常使用。学校配有应急电灯,教室走廊等处的电灯在停电紧急状况下,能正常开灯;校园建筑按规定配置消防器材,学校成立消防安全领导小组,定期检查消防器材、消防通道等设施,并作好记录,确保有效;各楼道出入口处均有安全出口标志,学生在紧急情况下能有序安全疏散;学校的每一幢建筑物都安装符合要求的防雷设施。
学校主出入口东面80m处设有禁鸣标志和减速慢行标志,校门口入口附近有学生疏散区。
学校配备1名专职保安人员和1名门卫。安排值日教师和行政值周进行日常巡视。在门卫安装与公安机关110接处警平台联网的警报装置,在学校各重点部位安装视频监控系统,保存材料,建立档案。学校有专人定时负责对技防设施进行检查维护和更新,确保技防设施设备正常使用。
第三部分:存在的问题和困难
目前学校存在的问题有二个方面:一是教师队伍的不够稳定;二是教师的结构不够合理,特别是缺少音、体、美、科学等学科专任教师。
第四部分:下一步工作打算
针对目前学校存在的一是教师队伍的不够稳定;二是教师的结构不够合理,特别是缺少音、体、美、科学等学科专任教师的问题,在下一步工作中我们将以提高教师队伍整体素质为目标,以加强继续教育和岗位培训为重点,以优化教师队伍结构为突破口,加强教师师德师风建设、要建立教师激励机制、合理安排教师岗位、加强骨干教师队伍建设、建立健全教师培训制度,努力建设一支师德高尚、业务精湛、结构合理、充满活力的教师队伍,为加强教育的内涵建设提供有力人才保障和智力支撑。
第五部分:指标达成情况说明
通过自查自评,13项指标中,第一至十二项自评为“达标”,第十三项为“基本达标”,专职保安未达到要求。
二0一六年十一月十八日
第四篇:教师自查总结
教师自查总结
本人通过认真学习毛泽东、邓小平、江泽民同志有关教育问题的理论,江泽民同志《在庆祝中国共产党成立八十周年大会上的讲话》,全国基础教育工作会议精神及国务院《关于基础教育改革与发展的决定》,认识到要以“三个代表”重要思想为指导,振奋精神,开拓进取,开创教育工作新局面;认识到《决定》是指导新世纪和我国基础教育改革与发展的纲领性文件,对于新世纪初基础教育的改革与发展将产生巨大的推动作用,要紧密联系教育工作实际,深入思考新世纪教育改革与发展的重大问题,推进教育的新跨越。行风评议不但是实现“三个代表”重要思想的重大举措,也是改善教育发展环境,转变教育系统工作作风的内在要求,促进教育事业健康发展的有力保证。进一步提高了加强行风建设的自觉性。
现将从教以来的工作情况总结如下:
一、在政治思想方面,本人长期坚持学习,努力提高自身的思想政治素质,学习《教育法》、《教师法》,按照《中小学教师职业道德规范》严格要求自己,奉公守法,遵守社会公德。忠诚人民的教育事业,为人师表。
二、在教育教学过程中,不断丰富自身学识,努力提高自身能力、业务水平,严格执行师德规范,有高度的事业心、责任心、爱岗敬业。坚持“一切为了学生,为了学生的一切”,树立正确的人才观,重视对每个学生的全面素质和良好个性的培养,不用
学习成绩作为唯一标准来衡量学生,与每一个学生建立平等、和谐、融洽、相互尊重的关系,关心每一个学生,尊重每一个学生的人格,努力发现和开发每一个学生的潜在优秀品质,坚持做到不体罚或变相体罚学生。正确处理教师与学生家长的关系,在与家长联系上相互探究如何使学生发展的方法、措施,在交往中不收礼、不吃请、不叫家长办事,不进行有偿家教,赢得了广大学生家长的普遍赞许。在教育教学过程中,利用学科特点加强对学生的思想教育,提高他们的思想政治素质,激发他们的学习积极性,努力提高教育教学质量。
三、存在的问题:
工作作风不够扎实,遇到困难不能知难而进,有时有任其自然的松懈思想。在教学实践中有时畏首畏尾,不能大刀阔斧地开展工作。
四、今后的改进方向:
要更进一步认真学习马列主义,毛泽东思想及邓小平理论以及江泽民同志“三个代表”的理论精神,及时掌握党的工作重点方针,与党中央保持高度的一致。从思想上行动上提高自己的工作责任心,树立一切为学生服务的思想。提高自己的钻研精神,不要遇难而退,要发挥敢于与一切困难做斗争的思想和作风。刻苦钻研业务知识,做到政治业务两过硬。
首先依法执教,学习宣传党的教育方针和基本路线,自觉遵守《教师法》与党和国家的大政方针保持高度一致。
其次爱岗敬业,热爱教育和学校,认真备课上课,认真批改作业,不敷衍塞责,不传播有害于学生身心健康的思想。第三热爱学生,关心全体学生,尊重学生的人格平等公正对待学生,对学生严格要求,耐心教导,不讽刺,挖苦,歧视学生,不体罚和变相体罚学生,保护学生合法权益。
第四严谨治学,树立优良学风,刻苦钻研业余,不断学习新知识,探索教育教学科规律,改进教育教学方法,提高教育,教学和科研水平。
第五团结协作,尊重老师,虚心学习,关心集体,维护学校荣誉,共创文明校风。
第六尊重家长,认真听取家长意见和建议,取得支持和配合,不指责备家长。
第七廉洁从教,发扬奉献精神,自觉抵制社会不良风气影响,不利用职务之便函谋取私利,不乱收费。
最后,为人师表,遵守社会公德,衣着整洁得体,语言健康得体,举止文明礼貌礼貌,严于律己,作风正派,以身作则,注重身教。
总之,在教育教学中,严格要求自己,做位合格人民教师的光荣称号。
第五篇:OSGi规范自我总结
OSGI框架从功能上分为下面几个层次:
安全层 Security Layer 模块层 Module Layer
生命周期层 Life Cycle Layer 服务接口层 Service Layer
安全层:
OSGi安全层是OSGi服务框架的一个可选的层。它基于Java 2 安全体系结构,提供了对精密控制环境下的应用部署和管理的基础架构。
OSGi服务平台采用两种方式对代码进行校验: 位置验证 签名验证
模块层:
Module Layer定义了在OSGI框架中是怎么去按照Module的思想去开发的。
框架定义了模型化单元,称之为一个 bundle。一个bundle由java的类和其他资源组成,可以为终端用户提供功能。通过良好定义的方式,Bundle 可以和导入(importer)及导出(exporter)Bundle之间共享Java包。
在OSGi服务框架中,bundle是仅有的需要部署的Java应用实体。Bundle以JAR文件的方式进行部署。
一个bundle是一个如下的JAR文件:
拥有提供服务所必须的资源。这些资源可以是 java的class文件,或者是其他的数据如HTML文件,帮助文件,图标文件等。一个bundle JAR文件也可以嵌入其他JAR文件作为资源,但是不支持多层嵌套的JAR。
有一个manifest文件描述JAR文件内容和bundle的信息。该文件处于JAR的头部,提供框架需要的安装和激活bundle所需的信息。例如,它对其他资源如 JAR文件的依赖这种状态信息必须在bundle运行之前加载。
可以在OSGI-OPT文件夹提供可选的文档信息,该文件夹可以位于 JAR文件根目录或者它的子文件夹中。OSGI-OPT文件夹中的内容都是可选的。例如,可以在其中保存 bundle的源代码。管理系统可以删除该文件夹内容,以便于节约OSGi服务平台的存储空间。当一个bundle开始运行,通过OSGi服务平台,它开始对安装在平台内的其他bundle提供功能和服务。
Bundle 的描述信息在一个 manifest 文件中,在 JAR 文件中的 META-INF 目录下的MANIFEST.MF文件。框架在manifest文件头中定义了Export-Package和Bundle-Classpath这样的OSGi manifest 头,bundle的开发人员可以使用它们提供 bundle的描述信息。
类加载机制:
许多bundle可以共享虚拟机(VM)。在VM内部,bundle可以相互隐藏包和类,也可以和其他bundle共享包。
隔离和共享包关键是由java的类加载器来实现,类加载器通过仔细定义的规则从bundle空间的一个子集中加载类。每一个bundle只会有一个单独的类加载器,类加载器形成了一个类加载的代理网络结构,如下所示:
类加载器可以加载类和资源,加载途径有:
启动类路径:启动类路径中有一个java.*的包以及它实现的包。
框架类路径:在框架中通常有一个单独的类加载器,加载框架实现的类和关键的服务接口类。
Bundle类空间:bundle的类空间由和bundle相关的JAR文件组成,以及其他和bundle紧密相关的JAR文件,比如bundle片断类空间是指一个给定的bundle类加载器可以访问到的所有的类。因此,一个指定bundle的类空间来自:
父类加载器(通常是来自启动类路径的java.*包中的) 导入的包
必须的bundle
Bundle类路径(私有包) 附加的片断
类空间必须是一致的,也就是说不能存在相同全名的两个类(为了防止类声明错误)。但是,在OSGi框架中,不同的类空间可以存在同名的类。在模块层,支持不同版本的类加载到相同的虚拟机中。
在使用一个 bundle之前,框架必须对共享的包之间的约束关系进行解析。解析过程就是确定导入包如何连接到导出包。
bundle的 package共享机制
在开发中可以直接通过import-package方式来引用所需要的package。通过export-package方式来导出对外暴露才包。
也可以在import-package中或者export-package中设置其过滤属性,以更加准确的获取或导出所需要的package。
可以通过版本过滤、元数据信息过滤、自定义属性过滤、必须的属性过滤来实现过滤获取或导出package。生命周期层:
bundle可以处于以下状态中的一种: INSTALLED — 成功安装bundle
RESOLVED — 所有bundle需要的Java类都准备好了。这个状态标志着 bundle已经是启动就绪或者是已经停止。
STARTING — 正在启动bundle。调用了bundle激活器的start方法,而且还没有从方法中返回。
ACTIVE — bundle已经启动完毕,正在运行中。
STOPPING — 正在停止bundle。调用了bundle激活器的stop方法,而且还没有从方法中返回。
UNINSTALLED — bundle已经卸载完毕,不能进入其他状态。
安装 Bundle
通过 BundleContext 的 installBundle 方法来安装 Bundle,在安装前首先需要对 Bundle进行校验,如校验通过,OSGI 框架中将安装 Bundle到系统中,此时 OSGI 框架会分配一个高于现在系统中所有的 Bundle 的 ID 给新的Bundle,安装完毕后 Bundle 的状态就变为 INSTALLED 了,同时会返回bundle 对象,在 Bundle 安装后就要使用 bundle 对象来管理 Bundle 的生命周期状态了。
解析 Bundle Bundle 安装完毕后,OSGI 框架将对 Bundle 进行解析,以检测 Bundle 中的类依赖等是否正确,如有错误则仍然处于 INSTALLED 状态,如成功Bundle 的状态则转变为 RESOLVED。
启动 Bundle 在启动 Bundle 前需检测 Bundle 的状态,如 Bundle状态不为 RESOLVED,那么需要先解析 Bundle,如启动一个解析失败的 Bundle,则会抛出BundleException,但此时 Bundle 的状态仍然会被设置为 ACTIVE;如Bundle 的状态已经是 ACTIVE,那么启动 Bundle对它不会产生任何影响。
通过 BundleContext 的 getBundle 方法可获取指定 Bundle ID 的 Bundle 对象,在获取到Bundle对象后可使用Bundle对象的start方法来启动Bundle,此时会调用 MANIFEST.MF 中的 Bundle-Activator 属性对应的BundleActivator 类的 start 方法(如存在 BundleActivator 类),在 start 方法执行的过程中 Bundle 的状态为 STARTING,当 start 方法执行完毕后Bundle 的状态转变为 ACTIVE,如 start 方法执行失败,Bundle 的状态转变为 RESOLVED。
停止 Bundle
通过 BundleContext 的 getBundle 方法可获取指定 Bundle ID 的 Bundle 对象,在获取到Bundle对象后可使用Bundle对象的stop方法来启动Bundle,此时会调用 MANIFEST.MF 中的 Bundle-Activator 属性对应的BundleActivator类的 stop方法,在 stop 方法执行的过程中 Bundle 的状态为STOPPING,当stop方法执行完毕后Bundle的状态转变为RESOLVED,如 stop 方法执行失败,Bundle 的状态则继续保留原状态。即使 Bundle 已经停止,其 export 的 package 仍然是可以使用的,这也就意味着可以执行 RESOLVED状态的 Bundle 中 export package的类。
卸载 Bundle
通过调用 Bundle 对象的uninstall 方法可完成 Bundle 的卸载,此时 Bundle的状态转变为 UNINSTALLED。即使 Bundle已卸载,其 export 的package 对于已经在使用的 Bundle 而言仍然是可用的,但对于新增的 Bundle 则不可使用已卸载的 Bundle export的 package。
监听 Bundle的状态
在监听 Bundle 的状态上 OSGI 采用的是典型的 Java 中的事件机制,在 OSGI中事件分为 Framework Event和 Bundle Event 两种,Framework Event 用于报告 Framework 已启动、改变了 StartLevel、刷新了 packages或是出现了错误;而 Bundle Event 则用于报告 Bundle 的生命周期的改变。可通过实现BundleListener或SynchronousBundleListener来监听Bundle Event,可通过实现 FrameworkListener来监听 Framework Event。
服务层:
Service Layer定义了 Bundle 动态协作的服务发布、查找和绑定模型,Service Layer 基于 Module Layer和 Lifecycle Layer,使得 OSGI 形成了完整的动态模型。
不过 Service Layer 的定义比较简单,是一个典型的 Service Locator 模式的模型,Service 通过BundleContext 完成注册和获取。
服务的注册
可在任何时候通过 BundleContext的 registerService 方法来完成服务的注册,和其他的服务框架一样,在 OSGI 中注册服务时也可以注册一个 ServiceFactory的类,服务成功注册后会返回 ServiceRegistration 对象,通过这个对象的unregister方法可卸载服务。
服务的获取
可在任何时刻通过 BundleContext 来获取服务,而通过 BundleContext在需要的时候获取服务则可保证获取服务的动态性。 服务的监听
通过实现 ServiceListener 可监听Service 的状态,通过 BundleContext 注册监听器,在注册监听器时可增加过滤的属性,以更加准确的监听希望监听的服务的事件。
在 OSGI R4 中还推出了 Declarative Services Declarative Services提供了更好的服务注册、获取、监听等方式,使得其成为了OSGI R4 中的重要角色,并由此替代了 Service Layer。
DS 提出了完整的 Service-Oriented Component Model(SOCM)概念,使得在 Bundle 中可以按照Component+Service的方式进行开发。
Component和 Service 从定义上来看是差不多的,任何一个普通的 Java对象都可以通过在配置文件中定义成 Component,Component 有下面这些作用:
对外提供 Service;
使用其他 Component 提供的 Service;
交由 OSGI 框架管理生命周期。
通过配置文件可以把一个普通的 Java对象定义为 DS 中的 Component。
在DS中,服务的发布和获取都是通过配置文件完成。服务的获取更像是spring中的IOC,在使用的时候由框架注入。
服务规范: OSGI的server规范中定义了众多的服务,常用的服务: Log Server:用于以日志方式记录系统操作。
Http Server:要求至少实现servlet2.1规范便于开发人员基于此服务对外提供简单的http访问。
Configuration Admin Server:用于管理各bundle或其它OSGI服务的配置信息。 Declarative Server:可以实现DI方式的OSGI服务注入,并且是动态的。 Event Admin Server:用于实现事件方式的通知。
OSGi是以Java为技术平台的动态模块化规范。OSIG是专门为开发复杂的Java应用准备的,在这些应用的开发过程中,非常需要将这些应用分割为一个个的模块。所以OSGi把应用程序劈分为多个模块单元,这样,您就可以更容易地管理这些模块单元之间的交叉依赖关系。
该规范定义了两种对象,一是容器对外提供的服务对象,另一个是容器和应用程序之间必须遵守的契约,其中,服务对象是容器要实现的。如果想要在OSGi平台上进行开发,首先,必须要使用OSGi API来创建您的应用,然后将之部署到OSGi容器中。从开发者的角度看,OSGi具有以下优点:
a)可以在不重启容器的情况下,动态地安装、卸载、启动和停止您的应用程序中的不同模块;
b)对于应用程序中的某一特定模块,容器可以同时运行该模块的多个版本; c)OSGi为开发嵌入式应用、移动应用、富互联网应用(RIA)提供了非常优秀的基础架构 Bundle是OSGi中最基本的单位,通俗地讲,如果说OSGi是基于Java平台的“模块化开发体系”,那么Bundle便是其中的“模块”。
bundle是一个包含元数据(关于数据的数据)的JAR文件,由类文件和相关资源组成。bundle通常并不是打包到一个JAR文件中的整个应用程序;相反,它们是构成一个特定应用程序的多个逻辑模块。bundle比标准的JAR文件更强大,因为你可以明确地声明哪些包对外可见(即导出包)
相比标准JAR文件,bundle的另一个重要优势是你可以明确声明依赖哪些外部包(即导入包)。明确声明bundle的导入包和导出包的主要好处是,OSGi框架可以自动地管理和验证它们的一致性;这个过程称为bundle解析,包括使导出包与导入包相匹配
在框架中,bundle可以在运行时通过框架服务注册中心选择一个可用的实现,bundle可以注册新服务、接受关于服务状态的通知或者查找适合当前设备的服务等。框架可以支持动态安装新的bundle,支持对一个已经部署后的Bundle进行更改、更新而不需要重新启动系统。
框架从功能上分为下面几个层次:
安全层 Security Layer :基于Java2的安全机制,增加了一些限制以及补充一些不足 模块层 Module Layer:对Java部署模式的一些缺点进行了改进,对bundle或者隐藏包与其他bundle之间共享包有严格规定
生命周期层 Life Cycle Layer:bundle提供了生命周期管理的API,为bundle提供了一个运行时的模型,定义了一个bundle如何启动、停止、安装、卸载等
服务接口层 Service Layer:提供了一个灵活、简单并且一致的编程模型,简化服务bundle的开发和部署,并以非耦合的服务标准(Java接口)来实现
服务实现层 Actual Service
安全层
精密控制(fine grained)—在OSGi框架下的应用控制必须达到精细粒度的控制。
可管理性—安全层本身没有定义API来控制应用,对安全层的管理交由生命周期层。可选性—安全层是可选的。(在资源约束的平台,这些Java安全API可以是一个存根,以便于可以运行和加载bundle类。在安全检查时,这些API存根并不实际执行)
代码验证 位置验证
签名验证:需要JAR文件也是采用签名
(数字签名是一种安全机制,采用如下方法进行验证: 验证签名者
确保签名后的内容没有被修改过。在OSGi框架中,对JAR文件的签名关联到该JAR文件。这种关联可用于: 在认证的基础上进行授权给JAR文件。通过对bundle权限操作选定这些bundle)签名提供了一种强大的代理模型。它允许操作员赋予一个公司一系列受限的权限,然后,这个公司就可以创建JAR文件来使用这些权限,而不需要进行其他的任何干涉或者通讯。
数字签名采用了公钥密码机制。公钥密码系统采用了两个数学上相关的数字作为密钥,一个公钥,一个是私钥。公钥是公开、自由散发的,一般采用证书的形式,私钥必须要保密的。
一个JAR文件可以含有多份签名信息,每一份签名信息必须在JAR文件中存储两条资源信息:
签名指令资源文件:和Manifest有着类似的结构,采用.SF的后缀名。描述了整个Manifest文件的摘要信息。
一份PKCS#7资源:包含对签名指令文件的数字签名,这些JAR文件的签名资源必须放在META-INF文件夹下。在META-INF文件夹中的文件采用的是非常规的签名方法。在JAR文件流中,这些签名资源文件必须紧随着MANIFEST.MF文件之后,而在其他任何资源文件之前。如果不这样做,那么框架就不会接收签名信息而认为bundle是没有经过签名的。排列顺序是如此重要是由于JAR文件的接收是采用流的形式而不是缓冲形式。在其他任何资源加载之前,需要完成安全信息的加载。
JAR Manifest必须包含有一份或多份实际资源的摘要信息。这些摘要信息在Manifest文件中有描述,放置在以他们名称命名的段中。摘要名称的标记是算法描述,接下来是“-Digest”。
下面是一个Manifest的例子: Manifest-Version: 1.0 Bundle-Name: DisplayManifest
Name: x/A.class SHA1-Digest: RJpDp+igoJ1kxs8CSFeDtMbMq78=
Name: x/B.class SHA1-Digest: 3EuIPcx414w2QfFSXSZEBfLgKYA=
权限管理服务(Permission Admin service):基于位置字符串的权限管理
条件权限管理服务(Conditional Permission Admin service):基于复杂条件模型的权限管理,可以使用位置或签名来验证条件。
模块层
Bundle可以和导入(importer)及导出(exporter)Bundle之间共享Java包。
Bundle的描述信息在一个manifest文件中,在JAR文件中的META-INF目录下的MANIFEST.MF文件。框架在manifest文件头中定义了Export-Package和Bundle-Classpath这样的OSGi manifest 头,bundle的开发人员可以使用它们提供bundle的描述信息
许多bundle可以共享虚拟机(VM)。在VM内部,bundle可以相互隐藏包和类,也可以和其他bundle共享包。
隔离和共享包关键是由java的类加载器来实现,类加载器通过仔细定义的规则从bundle空间的一个子集中加载类。每一个bundle只会有一个单独的类加载器,类加载器形成了一个类加载的代理网络结构
在OSGi中,类加载器可以划分为3类。
父类加载器:由Java平台直接提供,最典型的场景包括启动类加载器(Bootstrap ClassLoader)、扩展类加载器(Extension ClassLoader)和应用程序类加载器(Application ClassLoader)。在一些特殊场景中(如将OSGi内嵌入一个Web中间件)还会有更多的加载器组成。它们用于加载以“java.*”开头的类以及在父类委派清单中声明为要委派给父类加载器加载的类。
Bundle类加载器:每个Bundle都有自己独立的类加载器,用于加载本Bundle中的类和资源。当一个Bundle去请求加载另一个Bundle导出的Package中的类时,要把加载请求委派给导出类的那个Bundle的加载器处理,而无法自己去加载其他Bundle的类。
其他加载器:譬如线程上下文类加载器、框架类加载器等。它们并非OSGi规范中专门定义的,但是为了实现方便,在许多OSGi框架中都会使用。例如框架类加载器,OSGi框架实现一般会将这个独立的框架类加载器用于加载框架实现的类和关键的服务接口类。
类加载器可以加载类和资源,加载途径有:
启动类路径:启动类路径中有一个java.*的包以及它实现的包。框架类路径:在框架中通常有一个单独的类加载器,加载框架实现的类和关键的服务接口类。
Bundle类空间:bundle的类空间由和bundle相关的JAR文件组成,以及其他和bundle紧密相关的JAR文件,比如bundle片断(参考bundle片断一节)
类空间是指一个给定的bundle类加载器可以访问到的所有的类。因此,一个指定bundle的类空间来自:
父类加载器(通常是来自启动类路径的java.*包中的)导入的包 必须的bundle Bundle类路径(私有包)附加的片断
OSGi框架必须将以java.开头的Package交给父类加载器代理,这一点是无须设置且不可改动的。除此之外,OSGi框架也允许用户通过系统参数“org.osgi.framework.bootdelegation”自行指定一些Package委派给父类加载器加载,这个参数被称为“父类委派清单”(Boot Delegation List)。它的值应为一系列的包名,用逗号分隔,支持通配符,例如: org.osgi.framework.bootdelegation=sun.,com.sun.*
OSGi框架为每一个Bundle(不包括Fragment Bundle)生成了一个Bundle类加载器的实例,这些类加载器负责处理其他Bundle委派的加载请求,根据元数据信息确定这些加载请求的类是否与该Bundle的导出列表相符合,然后对合法的加载请求进行响应,返回该Bundle的类供其他Bundle使用。
Bundle-Classpath这个元数据标记与Bundle类加载器密切相关,它描述了Bundle加载器的Classpath范围,即Bundle加载器应该到哪里去查找类。
Bundle-Classpath标记有默认值“.”,它代表该Bundle的根目录,或者说代表该Bundle的JAR文件。如果不在元数据信息中显式定义这个标记,那么Bundle类加载器就在整个Bundle的范围内查找类。但是要注意,在这种默认配置下,如果Bundle存在其他JAR文件,类加载器只能把它当作一个普通资源来读取,而无法查找到这些JAR文件内部包含的类。例如,在Bundle中有如下路径:
在OSGi中还可能使用到其他的类加载器,比如OSGi实现框架中一般都会有框架类加载器(Framework Classloader)。OSGi框架为每个Bundle创建Bundle类加载器的实例,而OSGi框架自身的代码——至少涉及OSGi框架启动的代码就没法使用Bundle类加载器来加载,因此需要一个专门的框架类加载器来完成这个任务。这个框架类加载器是各个OSGi实现框架自己定义的,有时候可能直接使用Java平台提供的应用程序类加载器(Application ClassLoader)。这个框架类加载器还可能同时充当父类加载器的角色,比如在Equinox框架中就可以选择是使用启动类加载器、扩展类加载器、应用程序类加载器还是使用框架类加载器来作为父类加载器。
另外一个在OSGi中比较常见的类加载器是线程上下文类加载器(Thread ContextClassLoaser),这个类加载器并不是在OSGi中才出现的,它在普通的Java应用中有广泛应用。这个类加载器可以通过java.lang.Thread类的setContextClassLoaser()方法进行设置,如果创建线程时未设置,那么它将会从父线程中继承一个;如果在应用程序的全局范围内都没有设置过,那么这个类加载器就默认是应用程序类加载器。有了线程上下文类加载器,就可以做一些“舞弊”的事情,例如直接加载没有经过导入和导出的类,或者让由框架类加载器加载的OSGi框架代码在运行期得以访问一些系统Bundle中的类。
当一个Bundle类加载器遇到需要加载某个类或查找某个资源的请求时,搜索过程必须按以下指定步骤执行:
1)如果类或资源在以java.*开头的Package中,那么这个请求需要委派给父类加载器;否则,继续下一个步骤搜索。如果将这个请求委派给父类加载器后发现类或资源不存在,那么搜索终止并宣告这次类加载请求失败。
2)如果类或资源在父类委派清单(org.osgi.framework.bootdelegation)所列明的Package中,那么这个请求也将委派给父类加载器。如果将这个请求委派给父类加载器后,发现类或资源不存在,那么搜索将跳转到一个步骤。
3)如果类或资源在Import-Package标记描述的Package中,那么请求将委派给导出这个包的Bundle的类加载器,否则搜索过程将跳转到下一个步骤。如果将这个请求委派给Bundle类加载器后,发现类或资源不存在,那么搜索终止并宣告这次类加载请求失败。
4)如果类或资源在Require-Bundle导入的一个或多个Bundle的包中,这个请求将按照Require-Bundle指定的Bundle清单顺序逐一委派给对应Bundle的类加载器,由于被委派的加载器也会按照这里描述的搜索过程查找类,因此整个搜索过程就构成了深度优先的搜索策略。如果所有被委派的Bundle类加载器都没有找到类或资源,那么搜索将转到下一个步骤。
5)搜索Bundle内部的Classpath。如果类或资源没有找到,那么这个搜索将转到下一个步骤。
6)搜索每个附加的Fragment Bundle的Classpath。搜索顺序将按这些Fragment Bundle的ID升序搜索。如果这个类或资源没有找到,那么搜索转到下一个步骤。
7)如果类或资源在某个Bundle已声明导出的Package中,或者包含在已声明导入(Import-Package或Require-Bundle)的Package中,那么这次搜索过程将以没有找到指定的类或资源而终止。
8)如果类或资源在某个使用DynamicImport-Package声明导入的Package中,那么将尝试在运行时动态导入这个Package。如果在某个导出该Package的Bundle中找到需要加载的类,那么后面的类加载过程将按照步骤3)处理。
9)如果可以确定找到一个合适的完成动态导入的Bundle,那么这个请求将委派给该Bundle的类加载器。如果无法找到任何合适的Bundle来完成动态导入,那么搜索终止并宣告此次类加载请求失败。当将动态导入委派给另一个Bundle 类加载器时,类加载请求将按照步骤3)处理。
类空间必须是一致的,也就是说不能存在相同全名的两个类
解析过程必须在bundle中任何代码加载或运行之前。
manifest为解析过程提供的元数据信息
头标Bundle-SymbolicName(符号名称)是必须指定的。通过bundle的符号名称和版本号可以在框架中惟一的确定一个bundle。也就是说,如果一个bundle和另外一个bundle有着同样的符号名称和版本号,那么这两个bundle就是等价的。
只有bundle中同样的类使用相同的类加载器,那么bundle才能进行互操作(inter-operate)。
最常见的版本兼容原则如下:
主版本号(major):不兼容的更新 副版本号(minor):向后兼容的更新
小版本号(micro):不影响接口的更新。例如,修正了一个错误。服务
在OSGi服务平台下,bundle建立在一系列的相互协作的可用服务之上,这些服务共享一个服务注册中心。这样一个OSGi服务在语义上通过它的服务接口来定义,并实现为一个服务对象。
服务对象是属于bundle的,而且在bundle之内运行。bundle必须要将服务对象注册到框架的服务注册中心,这样,才可以在框架的控制下来为其他bundle提供服务。
提供服务的bundle和使用服务的bundle之间的依赖关系由框架来进行管理。