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

发表于:2007-05-26来源:作者:点击数: 标签:
引言 本系列文章的第1部分讨论了应用程序设计者们想在SMTP上使用 SOA P的原因,以及各种实现情况中的折衷设计。这篇文章将讨论几种实现方式之一的原始SMTP,并且让它运行在IBMWebSphereStudioApplicationDeveloper中(下文中称之为ApplicationDeveloper)。

引言
本系列文章的第1部分讨论了应用程序设计者们想在SMTP上使用SOAP的原因,以及各种实现情况中的折衷设计。这篇文章将讨论几种实现方式之一的原始SMTP,并且让它运行在IBM®WebSphere®StudioApplicationDeveloper中(下文中称之为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目录。这将把文件导入到正确的目录,从而与包的结构相匹配。

有些Axis源文件会有编译问题,因为它们依赖于crypto或者其他一些我们不使用的东西。您可以忽略这些问题。

此时,如果您已经安装了JUnit,您应该可以在khygh.smtp.unit中的任何一个类上执行JUnit了。

在WebSphereTestEnvironment中执行
我们已经差不多完成了,但考虑到ApplicationDeveloper中TestEnvironment的特性,我们还需要为运行时设置正确的JAR文件。为了完成设置,请打开Servers透视图,然后在ServerConfiguration视图中打开WebSphereTestEnvironment服务器实例。单击Paths选项卡。我们需要添加以前添加到Web项目构建路径中的大部分JAR文件,这样它们就可以被WebSphere运行时找到。使您的WebSphereTestEnvironment窗口如图3所示,换上您的JAR的文件正确路径:

图3.WebSphereTestEnvironment的类路径



WebSphere有自带的mail.jar和activation.jar,位于JVM的扩展目录,这意味着它们会首先被装入。为了使用您下载的最新版本,您需要将原有的那些文件移动到硬盘的其他地方。(把它们重命名是不够的,因为即使把它们重命名为xxxx.jar.old,他们仍然可以被使用)。ApplicationDeveloper中有若干个地方存在这些JAR文件,我们需要移动的那些位于/plugins/com.ibm.etools.server.jdk.jre.lib.ext/。如果您忘记这样做,服务器启动时您就会得到一个警告,提示您不支持POP协议

确保包含HttpUnit(如果您已经安装它)的DefaultEar和SOAP-SMTP在WebSphereTestEnvironment服务器配置中。

现在您需要在web.xml中添加需要的项。在Navigator视图或Packages视图中,打开SOAP-SMTP=>webApplication=>WEB-INF,然后打开web.xml,单击Source选项卡。使您的窗口如下面的图4所示,确保您的启动参数是正确的:

图4.web.xml



在DefaultEAR项目下打开application.xml,确保SOAP-SMTP有一个名为/Axis的上下文根,这是Axisadminservlet需要的。

祝贺您!您已经全部配置好了,现在就可以启动WebSphereTestEnvironment。从Server透视图中,单击Servers视图并启动WebSphereTestEnvironment。它应该会切换到Console视图,您可以在WebSphereApplictionServer启动时看到消息。如果它启动时抛出了任何异常,请检查前面的步骤,确保您遵循了配置WebSphereTestEnvironment的说明。

结束语
在这篇文章中,我们成功地在WebSphereStudio中部署了代码。本系列文章的下一篇将会讨论基于SMTP的SOAP实现。

原文转自:http://www.ltesting.net