分享
 
 
 

Consuming an External Web Service with Domino 6

王朝java/jsp·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

Consuming an External Web Service with Domino 6

Using the SOAPConnect for LotusScript package, developers can create Domino applications that can consume an external Web service and return the resulting data. This package, coupled with the Domino Designer tools, provides an easy-to-use mechanism that can be integrated into new and existing Domino 5 or 6 applications without the need for Java programming or the requirement of an external application server.

by Jeff Gunther

June 12, 2003

What is a Web service?

Web services give organizations the ability to extend existing business processes as published services. These services allow developers to loosely couple software components while easing the integration effort to exchange information between applications. Unlike traditional Domino Web-based applications, Web services contain no user interface for end-user interaction, but provide a unified way to execute processes and exchange data.

Web services are based on three technology standards:

The eXtensible Markup Language (XML), the enabling force behind Web services, is not a programming language or API but rather a platform-independent way to structure data. The syntax of XML makes it easy to programmatically manipulate textual data while still allowing it to be easily understood by humans. Web services use XML as the standard to provide communication between networked devices.

The Simple Object Access Protocol (SOAP) provides developers with a platform-independent mechanism to remotely invoke methods on distributed objects. The communication glue of a SOAP message uses XML for describing the object, method, and arguments to execute. Both clients and servers can implement and use SOAP. In this case, the SOAPConnect for LotusScript package provides an easy to use implementation that shields the developer from handling low-level XML.

The Web Service Description Language (WSDL) defines the available ports and operations for a particular Web service. You can think of a port as an interface and an operation as a method to be called on a particular object.

Book Catalog Scenario

Before I review the code and implementation details of how to use SOAPConnect for LotusScript, let's review the purpose and structure of the included sample database. The sample database is a short book catalog highlighting various gardening books. The goal of this database is to provide users with a way to receive up-to-date pricing on any book within the catalog. The database contains one form called Book that highlights the details about each book in the catalog. The Book form consists of five fields that describe each book: the book's title, the book's cover image, the book's author, the ISBN number, and the publisher. Users can browse the list of available books via a Web browser using the All Book view as shown in Figure 1.

Figure 1. The All Book view

As you'd expect, once a book has been selected in the view, the user is presented with that particular book's details.

Figure 2. Details for a particular book

As with most online retailers, the price of books fluctuates given demand and availability. The Get Price button allows users to receive an up-to-date price using the power of a Web Service from Barnes & Noble and the SOAPConnect for LotusScript package.

Installing SOAPConnect for LotusScript

The SOAPConnect for LotusScript package is available for download at the end of this article. In order to test the sample database or use the SOAPConnect for LotusScript, your environment must meet the following minimum requirements:

Lotus Notes Client, release 5.0.7a or later

Lotus Domino Designer, release 5.0.7a or later

Lotus Domino Server, release 5.0.7a or later

Although the SOAPConnect for LotusScript package doesn't require the developer to write any Java code, the package uses a Java agent underneath the covers to invoke the external Web service. Unfortunately, the Java agent uses an implementation of Apache's SOAP that requires a different version of the Java XML parser than the one installed as part of Notes and Domino. Following the steps below could affect other databases, so it's highly recommended that you perform these steps in a test or development environment.

To install on the Domino Designer, complete the following steps:

Unzip the SOAPConnect for LotusScript package in the directory C:\SOAPConnect.

Rename file XML4j.jar that is installed in the Notes program directory (by default C:\Lotus\Notes\XML4j.jar ) to XML4j.jar-hidden.

Copy all files in directory C:\SOAPConnect\ProgramDir to your Notes program directory (by default C:\Lotus\Notes ).

Copy all files in directory C:\SOAPConnect\DataDir to your Notes data directory (by default C:\Lotus\Notes\data ).

Rename file XML4J.jar that is installed in Designer's Java directory (by default C:\Lotus\Notes\data\domino\java ) to XML4j.jar-hidden. Then copy all files in directory C:\SOAPConnect\ProgramDir to your Designer Java directory (by default C:\Lotus\Notes\data\domino\java ).

To install on a Windows Domino Server, complete the following steps:

Unzip the SOAPConnect for LotusScript package in the directory C:\SOAPConnect.

Rename file XML4j.jar to XML4j.jar-hidden in both the Domino program directory (by default C:\Lotus\Domino ) and the Domino Java directory (by default C:\Lotus\Domino\Data\domino\java ).

Copy all files in directory C:\SOAPConnect\ProgramDir to your Domino program directory (by default C:\Lotus\Domino ) and also copy them to the Domino Java directory (by default C:\Lotus\Domino\Data\domino\java ).

Copy all files in directory C:\SOAPConnect\DataDir to your Domino data directory (by default C:\Lotus\Domino\data ).

Understanding SOAPConnect for LotusScript

As you saw during the installation process, SOAPConnect for LotusScript consist of several Java libraries and Domino databases. Although Java technology is used underneath the covers, SOAPConnect allows developers to use LotusScript to create, send, and manipulate SOAP messages. To gain a high-level view of how SOAPConnect for LotusScript operates, the diagram below demonstrates the data flow and the transport protocol being used.

Figure 3. Data flow and transport protocol

As illustrated in Figure 3, whenever a user wants to view the price for specific book, a document is created in the SOAPCall Runner database. The SOAPCall agent in the SOAPCall Runner database uses Apache's SOAP library to create a SOAP message and send it across to XMethod's servers. XMethods is a virtual laboratory for developers to test various Web services from many different authors and organizations. In the sample database, XMethod's server acts a router between the request from SOAPConnect and Barnes & Noble's servers. After the request has been forwarded to Barnes & Noble's server and the book is located within their catalog, the book's price is sent back to the SOAPCall agent through XMethod's server. In turn, the SOAPCall agent returns the price back to the calling LotusScript agent within the book catalog database.

Invoking the Web service

Now that I've covered the basics of Web services and the behavior for your sample application, let's get started with reviewing how to invoke a Web service using the SOAPConnect for LotusScript package. In the sample database, the GetPrice LotusScript agent is called when the user clicks the Get Price button on the Book form. Amazingly enough, it only takes nine lines of code to invoke the Web service and return the data back to the agent. The code below illustrates the objects and methods necessary to get back a book's price.

1 %INCLUDE "SoapConnect"

2 Dim session As New NotesSession

3 Dim doc As NotesDocument

4 Dim myArgs(0) As Variant

5 Dim price As String

6 Set doc = session.DocumentContext

7 Dim bn As New SOAPClient(

"http://services.xmethods.com:80/soap/servlet/rpcrouter" )

8 myArgs( 0 ) = doc.BookNumber( 0 )

9 price = bn.invoke("urn:xmethods-BNPriceCheck", "getPrice", myArgs)

Let's step through this code snippet:

Before you can use the SOAPClient class, you need to signal to Domino the location of this resource. The Include directive on line 1 inserts the contents of SoapConnect.lss into the agent at compile time. The SoapConnect.lss was copied into your program directory during the installation of SOAPConnect.

Lines 2 through 6 set up variables you'll use during the execution of the agent.

Here's where it gets interesting. On line 7 you create a new SOAPClient with the location of the service endpoint. This example uses a service endpoint of XMethods. More information about XMethods is available at the end of the article.

Before you can invoke the Web service, you need to get the ISBN number of the book in question.

Line 9 invokes the Web service passing the namespace, method, and argument. The namespace variable corresponds to the service that will be loaded, in this case the xmethods-BNPriceCheck service. The myArgs variable contains the ISBN number for the book.

Figure 4 illustrates the GetPrice agent within Domino Designer 6.

Figure 4. The GetPrice agent

Summary

Lotus has made a commitment to embrace Web services as a way to utilize and extend Notes and Domino's collaborative features. With packages like SOAPConnect for LotusScript, it's exciting to explore how Domino can consume Web services using native tools and procedures. The sample database provides a framework that can be used to create your own databases to invoke Web services. Throughout this article the following topics were presented:

Introduction to the core technologies that make up Web services.

Coverage of the steps involved in installing SOAPConnect for LotusScript.

Exploration of how to use SOAPConnect for LotusScript within the context of a sample application.

Resources

Download Lotus Domino Designer 6 and Lotus Domino Server 6 trial versions.

Download the SOAPConnect for LotusScript package.

Download the companion Domino database that was demonstrated throughout this article.

The Apache SOAP project provides a Java SOAP implementation that is used within SOAPConnect for LotusScript.

Find out more about XMethods virtual laboratory for developers to list and test out available Web services.

Find out more about Building Web services with Domino 6.

Learn how to Turn your Lotus applications into Web services.

Page 1 of 1

Jeff Gunther is the General Manager and founder of Intalgent Technologies, an emerging provider of software products and solutions utilizing the Lotus Notes/Domino and Java 2 Enterprise Edition platforms. Jeff Gunther has been a part of the Internet industry since its early, "pre-Mosaic" days. He has professional experience in all aspects of the software life cycle including specific software development expertise with Lotus Notes/Domino, Java/J2EE technology, DHTML, XML/XSLT, database design, and handheld devices. You can contact him at jeff.gunther@intalgent.com.

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有