从Weblogic迁移至Apusic以及配置默认应用

小编辑 发布于 2010/05/05 09:55
阅读 563
收藏 0

之前曾经做过一个使用JBuilder+Weblogic开发的项目(加入项目名字为tsterp),当时对Weblogic以及JBuilder 之间的配合不熟悉,对两者的工作原理也不甚了解,只知道在JBuilder下可以非常方便地开发对于Weblogic的应用,直到后来想把项目迁移到 tomcat下,发现总是404!当时对这个问题感到很奇怪,以为是tomcat某个配置有问题,由于对tomcat不熟悉,最后也不了了之了。

最近又拿到这个项目,已经将开发工具转换到apusic operamasks中,并将此项目作为一个标准的apusic工程创建完成。而weblogic实在是太慢了,就想把应用服务器迁移到apusic下, 发现在apusic下同样是404错误!此时发现报404错误的时候,浏览器的地址栏已经没有此应用的名字(tsterp),而是直接“地址:端口号/页 面”,奇怪了!项目名称怎么突然没了呢?难道说非要将此项目设置为默认的项目?先按照项目作为apusic默认的启动项目的配置方法,将此项目配置为 apusic下的默认应用,启动后竟然可以正常访问了!看来果然是某个地方的路径出了问题。关于apusic下设置默认应用的方法,如下所示:

  • 首先,如果应用是部署在apusic的默认域mydomain下,则需要将此domain下的default应用删除。即 将%apusic_home%\domains\mydomain\applications下的default应用移除;
  • 然后,在应用根目录下新建META-INF文件夹,文件夹下新建apusic-application.xml文件,该文件内容如下:
    1. <?xml version="1.0" encoding="UTF-8"?>  
    2. <!DOCTYPE apusic-application PUBLIC "-//Apusic//DTD Apusic Application 4.0.2//EN" "http://www.apusic.com/dtds/apusic-application_4_0_2.dtd">  
    3.   
    4. <apusic-application>  
    5.   <module uri="">  
    6.     <web>  
    7.         <context-root>/</context-root>  
    8.     </web>  
    9.   </module>  
    10. </apusic-application>  

由于在新建工程时,创建的是标准apusic工程(也就是一个指定了应用服务器为apusic的ear项目),因此,在此工程的根目录下已经默认 创建好,只需要修改apusic-application.xml文件的内容为上面所示。

注意:如果不将default移除,两个默认的应用会发生冲突,最终导致系统无法正常启动。

既然知道是什么原因了,再找一下其他解决方案,仔细看了一下原来的代码,发现有很多调用地址的地方直接写的页面的相对路径,而且这种路径都是按照服 务器默认就是当前应用的情况,没有考虑到当前应用不是默认的情形。此时,只需在过滤器及几个相关页面中在路径前加上 request.getContextPath()获取的上下文路径。更改完成几个地址调用的路径之后,再访问应用,不再出现404错误了。

由此,也发现了原来由于水平有限以及缺少相关积累,写出了一些灵活性及可移植性比较差的代码。

另外,查看了一下原来使用JBuilder+Weblogic时的项目路径下,有一个名为“weblogic.xml”的文件,在此文件中有一个名 为“context-root”的项,估计此项的作用就是指定了Weblogic下的默认的应用。

说完了上述问题,顺便查看了一下opermasks自动生成的META-INF下的application.xml文件,内容如下:

  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <application xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/application_5.xsd" version="5">  
  3.   <description>ebserp</description>  
  4.   <display-name>ebserp</display-name>  
  5.   <module>  
  6.     <web>  
  7.       <web-uri>web.war</web-uri>  
  8.       <context-root>tsterp</context-root>  
  9.     </web>  
  10.   </module>  
  11. </application>  

此文件中的“web_uri”便是自动生成的apusic-application.xml文件的“module”项的uri的值。而在此应用的缓 存%apusic_home%\domains\mydomain\deploy\tsterp\tmpfiles路径下,有一个名为“web.war” 的目录,此目录便是对应的application.xml文件中的“web-uri”的值,而之所以名为“web.war”,是因为在创建此ear项目 时,web模块的名定义为了“web”。而此domain下的另外一个普通的动态web工程(WebWindTest),其在deploy目录下,直接就 一个名为“WebWindTest.war”的目录。

加载中
返回顶部
顶部