2012-06-27 3 views
6

Sie nicht mit dem Server verbinden ... es ist ein Projekt in der letzten gwtGWT ACHTUNG: Keine Datei gefunden für: /com.mycompany.project.ImageViewer/GreetingService

Eclipse

auf Klick auf Button in gwt:

greetServer(textToServer, 
         new AsyncCallback<String>() { 
          public void onFailure(Throwable caught) { 
           // Show the RPC error message to the user 
           dialogBox 
             .setText("Remote Procedure Call - Failure"); 
           serverResponseLabel 
             .addStyleName("serverResponseLabelError"); 
           serverResponseLabel.setHTML(SERVER_ERROR); 
           dialogBox.center(); 
           closeButton.setFocus(true); 
          } 

          public void onSuccess(String result) { 
           dialogBox.setText("Remote Procedure Call"); 
           serverResponseLabel 
             .removeStyleName("serverResponseLabelError"); 
           serverResponseLabel.setHTML(result); 
           dialogBox.center(); 
           closeButton.setFocus(true); 
          } 
         }); 

mein gwt Server:

public String greetServer(String input) throws IllegalArgumentException { 
     // Verify that the input is valid. 
     if (!FieldVerifier.isValidName(input)) { 
      // If the input is not valid, throw an IllegalArgumentException back to 
      // the client. 
      throw new IllegalArgumentException(
        "Name must be at least 4 characters long"); 
     } 

     String serverInfo = getServletContext().getServerInfo(); 
     String userAgent = getThreadLocalRequest().getHeader("User-Agent"); 

     // Escape data from the client to avoid cross-site script vulnerabilities. 
     input = escapeHtml(input); 
     userAgent = escapeHtml(userAgent); 

     return "Hello, " + input + "!<br><br>I am running " + serverInfo 
       + ".<br><br>It looks like you are using:<br>" + userAgent; 
    } 

es ist mein gwt servise:

@RemoteServiceRelativePath("greet") 
public interface GreetingService extends RemoteService { 
    String greetServer(String name) throws IllegalArgumentException; 
} 

gwt serviseAsyn Datei:

public interface GreetingServiceAsync { 
    void greetServer(String input, AsyncCallback<String> callback) 
      throws IllegalArgumentException; 
} 


web xml 

    <!-- Servlets --> 
    <servlet> 
    <servlet-name>greetServlet</servlet-name> 
    <servlet-class>kill.server.GreetingServiceImpl</servlet-class> 
    </servlet> 

    <servlet-mapping> 
    <servlet-name>greetServlet</servlet-name> 
    <url-pattern>/hello123/greet</url-pattern> 
    </servlet-mapping> 

    <!-- Default page to serve --> 
    <welcome-file-list> 
    <welcome-file>Hello123.html</welcome-file> 
    </welcome-file-list> 

auf Klick-Taste - der Server nicht Wert zurück, weil keine Datei finden - warum?

Jun 27, 2012 11:12:13 AM com.google.appengine.tools.development.LocalResourceFileServlet doGet 
WARNING: No file found for: /com.mycompany.project.ImageViewer/GreetingService 

was tun?

Antwort

6

In Ihrem web.xml Datei ordnen Sie den Dienst als /hello123/greet:

<servlet-mapping> 
    <servlet-name>greetServlet</servlet-name> 
    <url-pattern>/hello123/greet</url-pattern> 
</servlet-mapping> 

während der Fehler zeigt es versucht, die Standardeinstellung /modulename/serviceinterfacename oder/com.mycompany.project.ImageViewer/GreetingService zu laden. Zwei Optionen stehen zur Verfügung:

  1. Ändern Sie den web.xml Eintrag die Standard-URL verwenden, die die RPC-Schnittstelle
  2. Konfigurieren Sie den Remote-Service erwartet von Ihrem benutzerdefinierten Pfad zu laden

Beide Thesen werden kurz diskutiert unter https://developers.google.com/web-toolkit/doc/latest/DevGuideServerCommunication zusammen mit anderen RPC-Setup-Details.

Für die zweite Option, das sieht in der Regel wie folgt aus:

MyServiceAsync service = GWT.create(MyService.class); 
((ServiceDefTarget)service).setServiceEntryPoint("/hello123/greet"); 
service.methodName(... 
Verwandte Themen