在网上查了很长时间关于RAP的部署问题,得到了一个相同的答案:利用Eclipse提供的rap.demo.feature插件自动生成,但是试了半天总是出现错误:“An entry point named 'default' does not exist”,于是以为应该加自己的进入点,所以改成了?startup=hello,这里hello是RAP中定义的entry point,可是又报'hello' does not exist,如此再三最终不得不放弃这一方法。
到现在我也不知道到底是我操作的不对,还是这一方法对于3.5就是扯淡,总之一句话没有试出来。这让我想起几个星期以前弄DND的时候,明明jar包中包含相应的DND支持,可是就是通不过,后来实在没办法,只能下载最新的jar包,上、通过。真TMD想F她大爷!
好了,废话不多说,好好描述一下成功的经验吧。首先假定你已经有一个RAP工程等待部署,它的工程名可以是任意的,我们这里假定为xxx.yyy。
1、在你非常喜欢的一个目录下建立如下目录结构:
请注意目录rap_web_deploy就是你非常喜欢的那个目录。
2、定义一个feature工程:file/new/other.../feature project;并在“Referenced Plug-ins and Fragments”对话框中选定你的plugins 工程xxx.yyy以及所有的非source插件、非javax.servlet插件、非jetty插件,有些情况下如果你的系统中有org.apache.commons.logging插件的话,那么它也不应该被选定。再罗嗦一下,以上提到的四种插件都不要选中,因为我们要把RAP部署到Tomcat中。
3、定义完feature工程后,将其export出去,选择“deployable features”项,并将export设定为导出到目录,一定记住导出到eclipse目录下。在操作过程中Eclipse将会把你选中的所有Plugins自动拷贝到eclipse/plugins下。
4、从你的Eclipse安装目录下的plugins目录中找到并拷贝org.eclipse.update.configurator_3.3.0.v20090312.jar文件到上述目录结构的plugins中;当然我这里给的是我的系统中的文件,你的可能版本不一样,但是只要名字对就行;
5、分别将servletbridge.jar放到以上目录结构的lib中;而将org.eclipse.equinox.http.servletbridge_1.0.0.HEAD.jar放到plugins中;这两个文件可以从这里/Files/wayne_wang/servletbridge.zip得到
6、在configuration目录中建一个config.ini文件,文件内容如下:
#Product Runtime Configuration File
osgi.bundles=org.eclipse.equinox.common@2:start,org.eclipse.update.configurator@start,org.eclipse.equinox.http.servletbridge@start,org.eclipse.equinox.http.registry@start,com.tr.helloworld.feature@start
osgi.bundles.defaultStartLevel=4
给大家一个例子:/Files/wayne_wang/config.rar,千万要注意的是com.tr.helloworld.feature@start就是你定义的那个feature工程的feature ID,它也许和工程名不同,但是只要使用feature ID就可以了,不要死教条。
6、在WEB-INF目录下定义web.xml文件,给一个例子:/Files/wayne_wang/web.rar,不必修改就可以用了,当然如果你的程序需要更多的配置,可能还要进一步更新它,在这里就不赘述了。
7、WEB-INF目录压缩,改名为任意文件名.war,例如hello.war,然后部署其到Tomcat中,这 个就不用我讲了。那么怎么访问呢?其实访问的URL是:
http://localhost:8080/hello/rap,这时系统将寻找默认的'default' entry point,如果你的程序没有定义,呵呵一定出错,这时只要使用?startup=hello就可以了,其中hello是你的RAP插件定义的entry point。可是这时候你可能会发现你的themes并没有起作用,那么好,只要将rap替换为你定义themes的时候给定的servlet name就可以了。
以下是我的程序界面,看看,还不错吧!