2016-07-07 3 views
0

Я создал образец проекта GWT + AppEngine с Eclipse и добавил один файл contact.gwt.xml в качестве клиента. Соответствует *.contact.nocache.js создатель: contact.html не обновляется с изменениями кода. Я запускаю его на локальном хосте на внутреннем сервере Jetty.* .nocache.js не перезагружает последние изменения кода (используя Restlet и GWT)

Вот мои файлы.

contact.html

<!doctype html> 
<html> 
<head> 
<meta http-equiv="content-type" content="text/html; charset=UTF-8"> 
<title>contact</title> 
<script type="text/javascript" laguage="javascript" 
    src="contact/org.restlet.example.firstapplication.contact.nocache.js?dummyTimeParam=<%=System.currentTimeMillis() %>"></script> 
</head> 

<body> 
    <h1>About a contact</h1> 

    <table> 
     <tr> 
      <th>Contact 102</th> 
      <th>Home address</th> 
     </tr> 
     <tr> 
      <td id="contactContainer" style="vertical-align: top"></td> 
      <td id="homeAddressContainer"></td> 
     </tr> 
     <tr> 
      <td id="buttonContainer" colspan="2"></td> 
     </tr> 
    </table> 
</body> 
</html> 

contact.gwt.xml

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE module PUBLIC "-//Google Inc.//DTD Google Web Toolkit 2.4.0//EN" "http://google-web-toolkit.googlecode.com/svn/tags/2.4.0/distro-source/core/src/gwt-module.dtd"> 
<module> 
    <inherits name="com.google.gwt.user.User" /> 
    <inherits name="org.restlet.Restlet" /> 
    <source path="client" /> 
    <source path="shared" /> 
    <inherits name='com.google.gwt.user.theme.clean.Clean' /> 
    <entry-point class='org.restlet.example.firstapplication.client.ContactModule' /> 

     <!-- allow Super Dev Mode --> 
     <add-linker name="xsiframe"/> 
</module> 

Соответствующая часть appengine.web.xml модуля

<static-files> 
    <include path="**" /> 

    <!-- The following line requires App Engine 1.3.2 SDK --> 
    <include path="**.nocache.*" expiration="0s" /> 

    <include path="**.cache.*" expiration="365d" /> 
    <exclude path="**.gwt.rpc" /> 
    </static-files> 

Restlet Применение

public class TestServerApplication extends Application { 

    @Override 
    public Restlet createInboundRoot() { 
     Router router = new Router(getContext()); 

     Directory dir = new Directory(getContext(), "war:///"); 
     router.attachDefault(dir); 
     router.attach("/contacts/123", ContactServerResource.class); 

     return router; 
    } 

} 

Независимо от изменений, внесенных в файл contact.html, он обновляется, но его соответствующий файл onModule() файла Java никогда не вызывается. Он всегда получает код ответа 304 для файла .nocache.js, который получает тот же файл .cache.html из местоположения «/ war/contact /».

Я думаю, мне нужно добавить фильтр, как сказано здесь (how to clear cache in gwt?), но я не уверен, что происходит и как добавить этот фильтр, не используя здесь сервлеты Java. Любая помощь будет оценена по достоинству.

+1

Похоже, ваш '* .nocache.js' кэшируется в браузере (или, возможно, в каком-то прокси). Попробуйте очистить кеш браузера и перезагрузить страницу. Если он работает, это подтвердит проблему с кешем, и вам необходимо каким-то образом заставить веб-сервер отправлять заголовки кеша. – Adam

+0

Спасибо за подсказку. Это была одна ошибка с моей стороны. – Junaid

ответ

0

Я не знаю, могу ли я удалить этот вопрос сейчас. Но это была одна глупая ошибка с моей стороны. Я скопировал код из другого проекта и изменил имя пакета на «org.example.contact». /war/<oldPackageName>/*.nocache.js, созданный для предыдущего пакета, все еще присутствовал и был связан в файле HTML. Когда я перекомпилировал код с новым пакетом, он создал новый файл /war/<newPackageName>/*.nocache.js, но HTML все еще ссылался на старый. Как только я понял процесс компиляции, он был исправлен.

Смежные вопросы