`

使用myeclipse遇到的问题

阅读更多
    使用myeclipse也有两个月的时间了, 但是今天却碰到了一个问题:

    重新部署myeclpse不生效, 要想使修改生效必须重启服务器。 请问这是为什么呀?  ?  ?

  ————————————网友解答————————————

   1、 将Tomcat WEBapps目录下该应用的目录清除掉,再在控制台上重新部署一下; (我不是这个原因)
如果还是有问题,说明你的部署目录有问题,可能是因为工程改名,导致重新部署之后,还是用原来那个工程名称部署的。

  2、 也许是页面缓存的问题:
页面中有:
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
吗?没有的话,加进去试试吧。



3、

这个问题是一个很严重的问题,没有热部署和有热部署的开发效率是天差地别的。这个问题还受很多第三方软件包(Struts,Spring,Hibernate)的限制。本来可以热部署,加入了第三方的包就不可以了。所以,先说明详细的软件环境,和程序配置是非常必要的。

虚拟机:java version "1.5.0_06"

Servlet Engine:Apache Tomcat/5.0.27

Eclipse:3.0.1

Myeclipse:3.8.3

应用程序情况:纯正的sertlet+jsp+javabean,数据库连接使用JDBC-ODBC桥连接Access数据库。没有使用任何第三方软件包,没有使用Struts,Spring,Hibernate。\WebRoot\WEB-INF\lib下是空的。

配置方法:

ie登陆http://Tomcat所在的服务器IP:8080/ -> 点超连接“Tomcat Administration”-> 输入用户名密码登陆 ->在左侧的功能树中 -> Tomcat Server -> Service(Catalina) -> Host(localhost) -> Context(/要修改的web项目) ->右侧新出现的页面中 ->Reloadable设置为true -> Save按钮 -> Commit Changes。

然后Tomcat日志显示:

debugging -- changes saved to conf/server.xml
- Removing web application at context path /test
- Processing Context configuration file URL file:D:\Program Files\Tomcat 5.0\conf\Catalina\localhost\test.xml
- Removing web application at context path /admin
- unregistering logger Catalina:type=Logger,path=/admin,host=localhost
- Processing Context configuration file URL file:D:\Program Files\Tomcat 5.0\conf\Catalina\localhost\admin.xml
- Initializing, config='org.apache.struts.util.LocalStrings', returnNull=true
- Initializing, config='org.apache.struts.action.ActionResources', returnNull=true
- Initializing, config='org.apache.webapp.admin.ApplicationResources', returnNull=true
- Removing web application at context path /webdav
- Processing Context configuration file URL file:D:\Program Files\Tomcat 5.0\conf\Catalina\localhost\webdav.xml
- Removing web application at context path /test
- Processing Context configuration file URL file:D:\Program Files\Tomcat 5.0\conf\Catalina\localhost\test.xml

……

这样,设置就生效了。

开发时,修改.java文件后,调用这个类时日志提示:
- Reloading this Context has started

这是正在重新加载修改后的.class文件。

O了。:)

PS:

如果没有进行这个设置,修改.java文件后,不抛出异常。系统使用没有修改的.java文件继续运行。

不同版本的Tomcat的配置方法是不同的。这里使用的是5.0.27

j2ee开发插件(这里使用Myeclipse),也可能导致热部署失效。因为插件必须要把编译好的.class文件从工作空间复制到Tomcat\webapps下的项目里。才能使Tomcat得到需要热部署的文件。

注意:如果项目中加入了Struts,Hibernate,Spring只类的第三方软件,可能导致热部署失效。

4、

       有很多人用MyEclipse+Tomcat写Java应用的时候很喜欢写Jsp或Javascript的原因之一就是其只需要刷新一下页面,而不用重新部署到Tomcat就可以看到效果,其实在写代码的时候同样可以达到此效果:启动Tomcat时使用Debug按钮(绿色的有点像甲虫的按钮) ,就可以在写代码的时候直接保存然后刷新页面就可以看到效果!不用每次再去重新部署了!



————————————一个好的解决方案——————————————————————

用myeclipse对修改过的程序保存后,为什么不能实时反映到浏览器上,这个问题困扰我了很久,

现在有个办法对此进行修正:

现在只要设置一下 context.xml

1.找到 context.xml ,这个文件在 %catalina_home%\conf下

2.打开文件,在 <Context>标记上添加属性: antiJARLocking="true" antiResourceLocking="true"
3.保存,然后重启

修改后的context.xml如下:

<Context antiJARLocking="true" antiResourceLocking="true">

    <!-- Default set of monitored resources -->
    <WatchedResource>WEB-INF/web.xml</WatchedResource>
  </Context>

红色部分就为增加的内容

在myeclipse中部署应用,然后对修改后的内容进行“redeploy”操作就行了



————————————————————————热部署——————————————————

所谓的热部署(热发布)(下面称为“热部署”),就是说,在web工程发布之后,不可避免的,会遇到修改BUG的问题。现在的热部署就是为了解决这个问题,其功能就是说:在不停止web服务的同时,对jsp和java类进行修改,修改后的效果同时还能够在页面上显示出来。节省了调试时间,提高了效率。不过,修改配置文件是个例外,如果对配置文件做修改,一定要重启web服务。
         常用的web服务器一般为tomcat和jboss,现一一做介绍。
         1.tomcat热部署
                  在tomcat中支持热部署有两种方式(在原理上来说,这两种方式是一致的,只是放的位置不同)
                 a)在catalina_base\conf\catalina\localhost\中依照manager.xml定义一个xml文件,比如我的项目称作sodoperation,我们就可以写一个sodoperation.xml,内容如下:
           <context path="/sodoperation"  docBase="d:\myportal\sodoperation\src\webapp"/>
            其中,path指的是你在tomcat中的项目名称,就像manager一样,docBase是指你的项目所在的web目录。一直到欢迎页面为止(也就是web-inf的前一个目录)。但是一般来说,这个目录中最好不要有中文,如果有的话,可以在文件开始加入
            <?xml version='1.0" encoding='utf-8' ?>来试一下,即整个文件变为:
             <?xml version='1.0" encoding='utf-8' ?>
            <context path="/sodoperation"  docBase="d:\myportal\sodoperation\src\webapp"/>
           这样就可以了,如果用这种广告,同时使用myeclipse的部署的话,轻易不要remove,这样会使文件都会被删掉,不能持久。所以,建议使用第二种方法。
              b)第二种方法和第一种方法在原理上是一致的,其区别就是位置的不同,这次在catalina_base\conf下的server.xml,在文件末加入:
      <context path="/sodoperation"  docBase="d:\myportal\sodoperation\src\webapp"/>
    解释和上面一样,这种方法在启动tomcat后,会在catalina_base\conf\catalina\localhost\中加入一个与第一种方法的文件。这样保证,只要对server.xml不做修改,你可以随便对新生成的文件删除,对热部署没有任何问题

2.jboss热部署
     在jboss中做热部署也有两种方法,因为jobss集成了tomcat,也可以说这两种方法是在jobss上的一个修改。
     a)修改jboss-4.0.4RC1\server\default\deploy\jbossweb-tomcat55.sar\context.xml
      <Context cookies="true" crossContext="true" antiResourceLocking="true" antiJARLocking="true">
         <Manager pathname=""/>
         <InstanceListener>org.jboss.web.tomcat.security.RunAsListener</InstanceListener>
        </Context>
   加上红色的部分,重启jboss,再用myeclipse Redeploy project的时候就不需要重启,部署完了直接开浏览器预览啦
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics