同级最多32扬声器!影音体验全车皆C位!岚图泰山打造“出行电影院”
2025-10-31
Web Service的运行模式
Web Service是独立的、模块化的应用,能够通过因特网来描述、发布、定位以及调用。在Web Service的体系架构中包括三个角色:服务提供者(Service Provider)、服务请求者(Service Requestor)、服务注册器(Service Registry)。角色间主要有三个操作:发布(Publish)、查找(Find)、绑定(Bind)。
如下图:
WebService中涉及两个部分:服务本身和对服务的描述。典型的应用过程是:服务提供者开发一个通过网络可以被访问的服务,然后将服务的描述注册到服务注册器或者发送给服务请求者;服务请求者通过查找动作在本地或服务注册器中检索服务描述,找到后,通过绑定就可以使用该项服务。 Web Service的整体架构
上图是从分层的角度来描述Web Service的整体架构。和网络的分层结构相同,上一层需要下一层的支持。而安全性、可管理性、服务质量则需要在各个层次都有所体现。Web Service设计到一些新的规范,如:UDDI(统一描述、发现和集成)、WSDL(Web Service描述语言)、WSFL(Web Service Flow Language)、SOAP(简单对象访问协议)等。通过这样一个层次分明的架构,Web Service希望达到一个目标,就是:实现动态的应用集成,将电子商务推向智能、和更加实用的阶段。 Web Service的特点 Web Service 是下一代分布式系统的核心,它具有如下特点:
按照向导的提示一步一步向下走,把下面规定的内容添到相应的项中。其余的用默认值既可。 Application Name: soapapp EAServer Component Name: soapapp Package Name: soap Specify transaction support: check Auto Demarcation/Deactivation Project: p_deploy 开PB组件n_soapapp,建立一个新的函数,getmessage(),返回值为String类型,内容为“Hello world”
打开p_deploy项目,将组件提交到应用服务器上。只需点击下图中箭头所指的图标。
打开Jaguar Manager,用jagadmin 连接并进入。找到Soap 包(package), 你可以看到刚才做的组件soap。如图:
编辑组件的属性: com.sybase.jaguar.component.home = soap::soapappHome
生成 EJB Stubs and Skeletons: Generate Stubs: checked Generate Java Stubs: checked Generate Java Files: check radio button Compile Java Stubs: checked Generate Skeletons: checked
用PowerJ设计SOAP 的客户端软件 在PowerJ中, 建立一个新的工作区,取名为#p#分页标题#e#soap (File - New Workspace),将它保存到 C:\soap中. 建立一个新的Java Classes Target (File _ New… from within Workspace View).
按照向导的顺序一步一步做,将下面的内容添到相应的位置:(没有规定的用默认值) Target name: soapClasses 建立一个新的Standard Class
按照向导的顺序一步一步做,将下面的内容添到相应的位置:(没有规定的用默认值) Class Name: PBClient 在Classpath中增加一个路径 C:\soap-2_2\lib\soap.jar 如下图:
以下为 PBClient.java 的代码: The Client (PBClient.java) import java.net.*; import org.apache.soap.*; import org.apache.soap.rpc.*; public class PBClient { public static void main (String[] args) throws Exception { if (args.length != 1 ) { System.err.println ("Usage: java " + + PBClient.class.getName () +" SOAP-router-URL); System.exit (1); } // Process the arguments. URL url = new URL (args[0]); // Build the call. Call call = new Call (); Call.setTargetObjectURI ("urn:testprovider); Call.setMethodName ("getmessage); // make the call: note that the action URI is empty because the // XML-SOAP rpc router does not need this. This may change in the // future. Response resp = call.invoke (/* router URL */ url, /* actionURI */ ""); // Check the response. if (resp.generatedFault ()) { Fault fault = resp.getFault (); System.out.println ("Ouch, the call failed: ); System.out.println (" Fault Code = + fault.getFaultCode ()); System.out.println (" Fault String = + fault.getFaultString ()); } else { Parameter result = resp.getReturnValue (); System.out.println ( "Done: + result.getValue()); } } } 配置SOAP服务器方服务: 我们需要将已经做好的PB组件(我们已经生成了EJB的Stub和Skeleton)注册到SOAP上,该组件运行在EAServer上。 我们建立如下一个XML文件: Deployment descriptor (DeploymentDescriptor.xml): <?xml version="1.0"?> isd:service xmlns:isd="http://xml.apache.org/xml-soap/deployment id="urn:testprovider"> isd:provider type="org.apache.soap.providers.StatelessEJBProvider" scope="Application" methods="create"> isd:java class="soap/soapapp"/> <isd:option key="FullHomeInterfaceName" value="soap.soapappHome" /> <isd:option key="ContextProviderURL" value="iiop://localhost:9000" /> <isd:option key="FullContextFactoryName" value="com.sybase.ejb.InitialContextFactory" /> </isd:provider> <isd:faultListener>org.apache.soap.server.DOMFaultListener</isd:faultListener>
你可以看到urn:testprovider被提交到SOAP,还有一个urn:stringservice被同时提交。 测试Web Service 我们用如下的Run.bat来测试该Web Service。 run.bat: @echo off cls set CLASSPATH=.;C:\soap-2_2\lib\soap.jar 19 set CLASSPATH=%CLASSPATH%;%JAGUAR%\java\lib\easj2ee.jar set CLASSPATH=%CLASSPATH%;%JAGUAR%\java\classes\crimson.jar set CLASSPATH=%CLASSPATH%;%JAGUAR%\java\classes\xalan.jar set CLASSPATH=%CLASSPATH%;%JAGUAR%\html\classes cd debug @echo on java -classpath "%CLASSPATH%; PBClient #p#分页标题#e#http://localhost:8090/soap/servlet/rpcrouter @echo off cd.. 注意,我们需要将以上三个文件Import到soapClasses目标下。如下图:
另外,为了看到客户端与服务之间的信息传递,我们需要启动Apache SOAP所带的工具,在一个DOS窗口中输入如下命令: java org.apache.soap.util.net.TcpTunnelGui 8090 localhost 8080 注意:在系统变量ClassPath中应加上 C:\soap-2_2\lib\soap.jar 运行结果如下:
可能出现的问题: 如果运行中XML-parsers出现了问题,可以将%SYBASE%\Shared\Sun\jdk122\jre\lib\ext\jaxp.jar 删除,然后再试。 我遇到的一个问题是crimson.jar文件的版本不对: 文件名评论 {{userinfo.comments}}
{{child.content}}



{{question.question}}
提交