仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 611|回复: 8
打印 上一主题 下一主题

[学习教程] JAVA网页设计JSP作为客户方会见CORBA服务对象

[复制链接]
再见西城 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:13:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
但是我同意你的观点,对于大型项目来说,应该是采用框架的一部分,根据功能的不同而改进,欢迎你能再提出些宝贵意见,我会多多学习的。说到jbuilder,我可能是个人感觉,用的时候确实没有vs爽,我最喜欢的IDE是netbeans,谢谢。js|对象|会见 分离J2EE和CORBA能够充实使用二者的长处创建功能更好功效更强的使用体系,比方可使用C++完成的CORBA对象作为营业处置构件,构成高功能营业逻辑层,在JSP中会见CORBA构件创建展示层。上面我们就一同来看一个在JSP中会见CORBA服务对象的例子。
  软件选择:
  CORBA服务方,我们选择中创软件商用两头件无限公司(http://www.inforbus.com)的InforBus(一个遵守CORBA标准的散布对象两头件),基于C++举行开辟。操纵体系选择IBMAIX(固然,你也能够选择HPUNIX、Linux大概Windows之类的)。
  CORBA客户方,为了展示CORBA的互操纵才能,这里利用了JDK中包括的ORB。固然,作为一种更好的选择,您也能够利用InforBus的Java版原本完成CORBA的客户方。
  JSP运转情况,我们选择中创软件商用两头件无限公司(http://www.inforbus.com)的InforWeb(一个遵守J2EE标准的使用服务器)。操纵体系选择Window(固然,你也能够选择HPUNIX、Linux大概AIX之类的)。

  程序完成
  IDL
  IDL是CORBA服务方和客户方举行哀求挪用的协定,只需利用不异的IDL,客户方和服务方就能够举行无缝的通信,而与客户方和服务方的开辟言语、操纵体系都没有干系,乃至你能够为客户方和服务方选择分歧的CORBA两头件(只需他们都遵守CORBA标准)。在完成CORBA客户方程序的时分,你不必要体贴服务方的任何细节,你所必要体贴的只要IDL!
在这里我们界说以下所示的IDL(文件名为apptest.idl):

  • moduleexample{
  • interfaceA{
  • longAOperation(inlongilData);
  • };
  • };


  CORBA服务方程序完成
  CORBA服务方完成必要做的事情次要有:将IDL映照到C++,完成IDL中界说的接口(即完成处置逻辑),编写一个主程序实例化服务对象供应服务。
  1.将IDL映照到C++
  这个只必要挪用InforBus的IDL编译器idl,实行以下命令:
idlapptest.idl
  这个命令将发生四个文件:apptest.h、apptest.cpp、apptest_skel.cpp、apptest_skel.cpp,个中包括了Skeleton。
  2.完成IDL中界说的接口
  承继Skeleton,完成IDL接口界说,在完成类中完成你的营业逻辑,在这个例子中我们完成一个复杂的逻辑,将吸收到的参数乘以2,然后将了局前往,代码以下:

  • ////////////////////////////////////////
  • //文件名:apptest_impl.h
  • #ifndefAPPTEST_IMPL_H
  • #defineAPPTEST_IMPL_H
  • #include"apptest_skel.h"

  • classA_impl:publicPOA_example::A,PortableServer::RefCountServantBase{
  • public:
  • virtualCORBA::LongAOperation(CORBA::LongilData)
  • throw(CORBA::SystemException);
  • };

  • #endif

  • //////////////////////////////////////////////////////
  • //文件名:apptest_impl.cpp
  • //包括CORBA体系类库
  • #include<STARCORBA.h>
  • usingnamespacestd;
  • #include<apptest_impl.h>

  • //操纵AOperation的完成
  • CORBA::LongA_impl::AOperation(CORBA::LongilData)
  • throw(CORBA::SystemException){
  • CORBA::Longret;
  • ret=ilData*2;
  • returnret;
  • }


  3.编写一个主程序实例化服务对象供应服务
  在主程序中,创建CORBA情况,实例化服务对象并注册到名字服务,然后入手下手守候哀求,代码以下(为了):

  • ///////////////////////////////////////////
  • //文件名:Server.cpp
  • #include<stdio.h>
  • #include<STARCORBA.h>
  • #include<STARCosNaming.h>
  • #include<stdlib.h>
  • #include<errno.h>
  • #include"apptest_impl.h"
  • usingnamespacestd;

  • intmain(intargc,char*argv[],char*[]){
  • CORBA::ORB_varorb;
  • orb=CORBA::ORB_init(argc,argv);

  • CORBA::Object_varnameobj=
  • orb->resolve_initial_references("NameService");
  • CosNaming::NamingContext_varnc=
  • CosNaming::NamingContext::_narrow(nameobj.in());

  • CORBA::Object_varpoaObj=
  • orb->resolve_initial_references("RootPOA");
  • PortableServer::POA_varrootPOA=
  • PortableServer::POA::_narrow(poaObj);
  • PortableServer::POAManager_varmanager=
  • rootPOA->the_POAManager();

  • A_impl*AImpl=newA_impl();
  • PortableServer::ServantBase_varservantA=AImpl;
  • PortableServer::ObjectId_varAid=
  • rootPOA->activate_object(servantA);
  • CORBA::Object_varA=
  • rootPOA->servant_to_reference(servantA);

  • CosNaming::NameAName;
  • AName.length(1);
  • AName[0].id=CORBA::string_dup("A");
  • AName[0].kind=CORBA::string_dup("OperationA");
  • nc->rebind(AName,A.in());

  • manager->activate();
  • orb->run();

  • nc->unbind(AName);
  • returnEXIT_SUCCESS;
  • }


  Web使用完成
  Web使用中次要是经由过程一个JSP会见CORBA服务对象并举行展现,在这里充任CORBA的客户方。完成Web使用必要完成两个方面义务:将IDL映照到Java,在JSP中发送哀求并展现了局。
  1.将IDL映照到Java
  这个只必要挪用JDK的IDL编译器idlj,实行以下命令:
idljapptest.idl
  这个命令将发生五个文件:A.java、AOperations.java、AHelper.java、AHolder.java和_AStub.java,个中包括了Stub。

  2.在JSP中发送哀求并展现了局。
  为了不在JSP中包括太多的Script,在这里将发送哀求的代码从JSP分别到了一个复杂的Java类中。
  Java类的代码以下(AClient.java):

  • /*
  • *AClient.java
  • */
  • packageexample;

  • importorg.omg.CORBA.*;
  • importorg.omg.CORBA.ORBPackage.InvalidName;
  • importorg.omg.CosNaming.*;
  • importorg.omg.CosNaming.NamingContextPackage.CannotProceed;
  • importorg.omg.CosNaming.NamingContextPackage.NotFound;

  • /**
  • *@author公飞
  • */
  • publicclassAClient{
  • publicstaticintopA(intnum)throwsException{
  • String[]args={"-ORBInitRef",
  • "NameService=corbaloc:iiop:192.168.60.158:900/NameService"};
  • ORBorb=ORB.init(args,null);
  • org.omg.CORBA.ObjectobjRef;
  • objRef=orb.resolve_initial_references("NameService");
  • NamingContextncRef=NamingContextHelper.narrow(objRef);
  • NameComponentnc=newNameComponent("A","OperationA");
  • NameComponentpath[]={nc};

  • org.omg.CORBA.ObjectobjA;
  • objA=ncRef.resolve(path);
  • Aa=AHelper.narrow(objA);

  • intout;
  • out=a.AOperation(num);
  • returnout;
  • }
  • }


  JSP文件的代码以下(index.jsp):

  • <%@pagecontentType="text/html;charset=gb2312"%>
  • <%@pageimport="example.AClient"%>
  • <html>
  • <head>
  • <title>HelloJSPCORBAClient</title>
  • </head>
  • <body>
  • 3*2=<%=AClient.opA(3)%>
  • </body>
  • </html>


  好了,编译好你的程序,运转名字服务,运转CORBA服务程序,运转使用服务器InforWeb,部署Web使用,然后就能够经由过程扫瞄器会见了。
JAVA是一种可以撰写跨平台应用软件的面向对象的程序设计语言,由升阳(SunMicrosystems)公司的詹姆斯·高斯林(JamesGosling)等人于1990年代初开发。
谁可相欹 该用户已被删除
沙发
发表于 2015-1-19 23:26:19 | 只看该作者
接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。
金色的骷髅 该用户已被删除
板凳
发表于 2015-2-2 16:56:59 | 只看该作者
如果你学过HTML,那么事情要好办的多,如果没有,那你快去补一补HTML基础吧。其实JSP中的Java语法也不多,它更象一个脚本语言,有点象ASP。
冷月葬花魂 该用户已被删除
地板
发表于 2015-2-4 10:05:53 | 只看该作者
Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。
海妖 该用户已被删除
5#
发表于 2015-2-9 22:04:27 | 只看该作者
是一种使用者不需花费很多时间学习的语言
小魔女 该用户已被删除
6#
发表于 2015-2-27 23:35:16 | 只看该作者
所以现在应用最广泛又最好学的就是J2EE了。 J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。
山那边是海 该用户已被删除
7#
发表于 2015-3-7 02:49:58 | 只看该作者
一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从
莫相离 该用户已被删除
8#
发表于 2015-3-14 05:25:00 | 只看该作者
多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。
透明 该用户已被删除
9#
发表于 2015-3-21 00:38:30 | 只看该作者
其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 03:15

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表