开发者

How do develop a Java web application without having to deploy all the time

I've set up a simple Eclipse 3.5/Jetty 6.1 web app which returns hello world. It works. This is on Windows and uses the "Jetty Generic Server Adapter". I have auto deployment working so that it deploys after changes periodically.

How do I go about setting it up so that if I change开发者_开发技巧 any static content it doesn't have to redeploy i.e I can just hit F5 to see the changes straight away. For minor HTML changes it's quite unusable waiting 20-30 seconds for a deployment.


I haven't used Jetty before, so I can't tell from experience if that long deployment times are normal nor how to optimize it. But I would just inform that this is dependent on the server and the server plugin used. In case of Apache Tomcat 6 + Eclipse-provided plugin and Sun Glassfish v3 + GF-provided plugin the auto deployments are fast enough. Especially Glassfish v3, which is relatively slow on startup, really excels with sub-second (hot)deployments.

First step would be to check if there are alternative Jetty Eclipse plugins and then try them and/or if there is a setting to lower the hotdeploy scan interval.


I use maven with configuration below

        <plugin>
            <groupId>org.mortbay.jetty</groupId>
            <artifactId>maven-jetty-plugin</artifactId>
            <version>6.1.25</version>
            <configuration>
                <scanIntervalSeconds>1</scanIntervalSeconds>
                <requestLog implementation="org.mortbay.jetty.NCSARequestLog">
                    <append>true</append>
                </requestLog>
            </configuration>
        </plugin>

so jetty scans for changes every second, and for my simple application it takes about 200ms to restart app. I noticed that sometimes yetty does not sees changes in jsp files


The problem you're describing might be this one. It is a known problem that static files are locked in Jetty on Windows - which might force you to redeploy. Normally you can just edit your files, you don't have to redeploy anything to see your changes. It works even with class modifications (well, to some extent).

This is the third time I advertise it today, but here's my approach for Jetty-based testing: Hifaces20 Testing.

ps. Hifaces20 Testing does not suffer from the file locking problem, it implements the suggested workaround.


  1. I found, that the time it takes to auto deploy depends greatly on the application server. I haven't done auto deployment with Jetty, but the difference between JBoss (>10 sec) and Glassfish (< 3 secs) is significant.

  2. You could link the static directory of your application server into the Eclipse workspace. This way, you would edit the files directly in that directory.

Here's how to create such a link: New > Folder > Advanced > Link folder in the file system

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜