2012-03-01 25 views
5

Dự án GWT của tôi hoạt động tốt nhưng hôm nay, sau một số thay đổi và thêm fetures mới cuộc gọi không đồng bộ sẽ không được thực thi. Trường hợp ngoại lệ là "Ứng dụng này đã hết hạn ngày, vui lòng nhấp vào nút làm mới trên trình duyệt của bạn". tất cả các cuộc gọi không đồng bộ khác được thực hiện.Không tương thíchRemoteServiceException: Ứng dụng này đã lỗi thời, vui lòng nhấp vào nút làm mới trên trình duyệt của bạn

An IncompatibleRemoteServiceException was thrown while processing this call. 
com.google.gwt.user.client.rpc.IncompatibleRemoteServiceException: This application is out of date, please click the refresh button on your browser. (Blocked attempt to access interface 'com.client.FInterface', which is not implemented by 'com.server.FServiceImpl'; this is either misconfiguration or a hack attempt) 
at com.google.gwt.user.server.rpc.RPC.decodeRequest(RPC.java:252) 
at com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:206) 
at com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost(RemoteServiceServlet.java:248) 

Chủ đầu tư:

 public void onClick(ClickEvent event) { 

          fService.getRepositories(repocallback); 

     } 
    }); 

Interface

@RemoteServiceRelativePath("init") 
    public interface FInterface extends RemoteService{  

    FCollection getRepositories(); 
} 

AsyncInterface

public interface FInterfaceAsync { 
void getRepositories(AsyncCallback<FCollection> repositoryCallback); 
} 

Dịch vụ

public class FService implements FInterfaceAsync { 
FInterfaceAsync service =(FInterfaceAsync)GWT.create(FInterface.class); 
ServiceDefTarget endpoint = (ServiceDefTarget) service; 

    public FService(){ 
    endpoint.setServiceEntryPoint(GWT.getModuleBaseURL() + "init"); 
    } 
     } 

server

public class FServiceImpl extends RemoteServiceServlet implements FInterface { 

     public FilnetFolderCollection getRepositories() { 
     } 

} 

XML:

<servlet> 
    <servlet-name>FServlet</servlet-name> 
    <servlet-class>com.server.FServiceImpl</servlet-class> 
    </servlet> 

    <servlet-mapping> 
    <servlet-name>FServlet</servlet-name> 
    <url-pattern>/FServiceImpl</url-pattern> 
    </servlet-mapping> 

Ai đó giúp tôi để khắc phục vấn đề này.

Trả lời

7

Lỗi này được ném nếu mã Javascript đang chạy trong trình duyệt là một phiên bản khác với Javascript được triển khai trên máy chủ. Trong trường hợp đó trong mã JavaScript trong trình duyệt gọi phương thức trên máy chủ thông qua Async và số tham số hoặc kiểu tham số của phương thức đó đã thay đổi trên máy chủ thì phương thức này không có mặt vì phía máy chủ GWT không thể tìm thấy phương thức số lượng tham số hoặc loại, vì các phương thức trên máy chủ mới hơn. Điều này có thể xảy ra nếu trình duyệt vẫn có Javascript GWT được lưu trong bộ nhớ cache và khi bạn khởi động trình duyệt, trình duyệt sẽ không tải các tệp JavaScript mới từ máy chủ, nhưng sẽ lấy các tệp cục bộ từ bộ nhớ cache. Bằng cách buộc trình duyệt bằng Ctrl-F5 để làm mới phiên bản được lưu trong bộ nhớ cache cục bộ trong trình duyệt sẽ biến mất khi phiên bản mới từ máy chủ sẽ được truy xuất và sự cố này sẽ được khắc phục. Trong quá trình sản xuất, vấn đề này có thể xảy ra nếu cài đặt bộ nhớ cache của máy chủ web hoặc máy chủ java không được đặt để vô hiệu hóa tệp nocache. Xem thêm http://code.google.com/webtoolkit/doc/latest/DevGuideCompilingAndDebugging.html#perfect_caching

+0

@Hibrand Bouwkamp http://stackoverflow.com/a/9531020/1046176 – NewCodeLearner

0

Sau khi thực hiện thay đổi máy chủ bên trong mã của bạn, bạn cần phải relaunch dự án hoặc tải lại webserver .. Nó sẽ giải quyết vấn đề

1

Các lỗi có thể được giải quyết bằng một trong các cách sau:

  1. xóa bộ nhớ cache của trình duyệt
  2. xoá bộ nhớ cache web-server
  3. xóa các tệp lớp và xây dựng lại dự án của bạn. Bạn có thể xây dựng lại dự án của mình bằng cách chạy các giai đoạn "sạch" và "cài đặt" của trình đơn hoặc trình đơn "Build -> Rebuild Project" của trình đơn IntellijIdea và "Project -> Clean" trong Eclipse.
+0

Bước 3 làm việc cho tôi. Rõ ràng một số tập tin cũ đã gây ra xung đột. –