使用SMTP和WebSphere Studio构建Web服务——原始SMTP

引言
本系列文章的第1部分讨论了应用程序设计者们想在SMTP上使用SOAP的原因,以及各种实现情况中的折衷设计 。这篇文章将讨论几种实现方式之一的原始SMTP,并且让它运行在IBM甒ebSphere甋tudioApplicationDeveloper中(下文中称之为ApplicationDeveloper) 。
这些指令在RedHatLinux7.2上运行的ApplicationDeveloper4.03上被测试过 。
收集组件
您可以从下面下载源代码 。我们将会需要几部分组件让Axis和SMTP运行于ApplicationDeveloper 。下面是每个组件的描述和链接:
JavaMail用于发送和接收SMTP电子邮件 。我们使用它所提供的mail.jar 。
Java?ActivationFramework由JavaMail所使用 。我们需要这个组件中的activation.jar 。
ApacheAxis用于我们Web服务的处理 。假如您下载的是这个包的源文件版本,那么您还需要下载Ant来构建它 。
提供的代码要使用JUnit测试案例和HTTPUnit测试案例 。它们是可选的,但我们强烈推荐您使用它们 。
在ApplicationDeveloper中安装代码
首先,在ApplicationDeveloper中创建一个名为SOAP-SMTP的Web项目 。确保它有一个名为/Axis的上下文根 。图1是您在项目创建向导中应该看到的 。请单击Finish 。
图1.Web项目创建向导
假如您此时还没有为其他工作安装JUnit和HttpUnit的话,您可以安装它们 。JUnit应该安装到它自己的Java项目中,而HttpUnit应该安装到它自己的Web项目中 。
我们现在可以为SOAP-SMTP项目添加代码了:
在Navigator视图中打开项目,然后单击source文件夹 。
在菜单栏单击File=>Import 。
选择从一个ZIP文件导入,然后单击Next 。
浏览并找到您下载的soap-smtp.zip,选择所有类型,确保目标为SOAP-SMTP/source 。
单击Finish 。ApplicationDeveloper导入并且编译源代码 。您将会看到编译出现问题,因为我们还没有指定我们所需要的所有JAR文件,我们现在开始完成这些工作 。
将JAR文件添加到编译期类路径中
此时,假如您下载了Axis的源文件分发版,您需要构建它 。指令在AxisZIP文件中 。
右键单击SOAP-SMTP项目,然后选择Properties 。
在左边窗格中选择JavaBuildPath,它用来设置编译代码的类路径 。
选择Projects选项卡,假如您已经创建了JUnit和HttpUnit项目,选中他们 。这将编译和执行测试类 。
选择Libraries选项卡 。
我们需要在这里添加几个JAR文件 。单击AddExternalJAR,浏览并找到您下载JavaMail的目录然后添加mail.jar 。
类似地,浏览并找到您下载JavaActivationFramework(JAF)的目录,然后添加activation.jar 。
现在从Axis添加7个JAR文件:axis.jar、commons-discovery.jar、commons-logging.jar、jaxrpc.jar、log4j-1.2.4.jar(您的数字可能会有不同,这取决于您下载Axis的时间)、saaj.jar和wsdl4j.jar 。
我们还需要添加几个标准的JAR文件,它们是ApplicationDeveloper中包含的WebSphereApplicationServer所附带的 。单击AddVariable然后添加WAS_XERCES和WAS_XALAN 。
为了运行一些示例,我们需要覆盖ApplicationDeveloper附带的mail.jar和activation.jar 。单击Order选项卡,然后把这两个新添加的JAR文件移动到列表最上方的rt.jar之上 。
当您单击OK时,大多数编译问题都应该被解决了 。切换到Java包视图时您应该会看到类似于图2的界面:
图2.Packages视图中的相关JAR文件
点击查看大图
现在我们需要将正确的Axis部分添加到我们的项目中 。我们已经有了基本的Axis代码,但我们要使用它们的示例,所以我们得连接到Web服务上 。同样地,单击SOAP-SMTP=>source,然后选择File=>Import 。选择Importfromafilesystem,然后导入Axis示例 。您需要从他们的构建目录而不是从src目录树得到这些示例,因为并不是所有的东西都在src中 。我是从/XML-axis/java/build/work导入的,然后选择samples目录 。这将把文件导入到正确的目录,从而与包的结构相匹配 。

推荐阅读