2013-02-12 3 views
0

Я использую GWT 2.5. У меня есть приложение, использующее gwt-rpc. Я собрал проект и создаю файл войны, используя ant-script. Когда я буду разворачивать проект на tomcat, он загружается успешно, но не показывает никакого контроля. Просто простая страница html. вот мои файлы. МодульРазвертывание приложений GWT 2.5 в Tomcat?

<?xml version="1.0" encoding="UTF-8"?> 
<!-- 
    When updating your version of GWT, you should also update this DTD reference, 
    so that your app can take advantage of the latest GWT module capabilities. 
--> 
<!DOCTYPE module PUBLIC "-//Google Inc.//DTD Google Web Toolkit 2.5.0//EN" 
    "http://google-web-toolkit.googlecode.com/svn/tags/2.5.0/distro-source/core/src/gwt-module.dtd"> 
<module rename-to='interviewscheduler'> 
    <!-- Inherit the core Web Toolkit stuff.      --> 
    <inherits name='com.google.gwt.user.User'/> 

    <!-- Inherit the default GWT style sheet. You can change  --> 
    <!-- the theme of your GWT application by uncommenting   --> 
    <!-- any one of the following lines.       --> 
    <inherits name='com.google.gwt.user.theme.clean.Clean'/> 
    <!-- <inherits name='com.google.gwt.user.theme.standard.Standard'/> --> 
    <!-- <inherits name='com.google.gwt.user.theme.chrome.Chrome'/> --> 
    <!-- <inherits name='com.google.gwt.user.theme.dark.Dark'/>  --> 

    <!-- Other module inherits          --> 
    <inherits name="com.smartgwt.SmartGwt"/> 
    <!-- Specify the app entry point class.       --> 
    <entry-point class='interviewscheduler.client.InterViewScheduler'/> 

    <!-- Specify the paths for translatable code     --> 
    <source path='client'/> 
    <source path='shared'/> 

</module> 

Дистанционное обслуживание

package interviewscheduler.client; 

import interviewscheduler.shared.Interview; 
import interviewscheduler.shared.Teacher; 

import java.util.LinkedHashMap; 
import java.util.List; 

import com.google.gwt.user.client.rpc.RemoteService; 
import com.google.gwt.user.client.rpc.RemoteServiceRelativePath; 

@RemoteServiceRelativePath("interviewScheduler") 
public interface InterviewSchedulerService extends RemoteService{ 
    Boolean loadStudentData() throws IllegalArgumentException; 
    Boolean loadParentData() throws IllegalArgumentException; 
    Boolean loadTeacherData() throws IllegalArgumentException; 
    Boolean loadClassData() throws IllegalArgumentException; 
    Boolean loadClassMemberShipData() throws IllegalArgumentException; 
    Boolean loadRoomData() throws IllegalArgumentException; 
    Boolean loadSessionData() throws IllegalArgumentException; 
    Boolean loadInterviewData() throws IllegalArgumentException; 
    LinkedHashMap<String, String> getStudentNames() throws IllegalArgumentException; 
    String getParentName(String studentKey) throws IllegalArgumentException; 
    List<Teacher> getAvailableTeachers(String studentKey) throws IllegalArgumentException; 
    List<Teacher> getRequestedTeachers(String studentKey) throws IllegalArgumentException; 
    List<Interview> getInterviewByStudent(String studentKey) throws IllegalArgumentException; 
    List<Interview> getInterviewByTeacher(String teacherCode) throws IllegalArgumentException; 
    List<Object> getInterviewsForGrid(List<Interview> list) throws IllegalArgumentException; 
    String addInterview(Interview obj) throws IllegalArgumentException; 
    String removeInterview(String studentId, String teacherId) throws IllegalArgumentException; 
} 

web.xml

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
       http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
     version="2.5" 
     xmlns="http://java.sun.com/xml/ns/javaee"> 

    <!-- Servlets --> 

    <servlet> 
    <servlet-name>interviewSchedulerServlet</servlet-name> 
    <servlet-class>interviewscheduler.server.InterviewSchedulerServiceImpl</servlet-class> 
    </servlet> 

    <servlet-mapping> 
    <servlet-name>interviewSchedulerServlet</servlet-name> 
    <url-pattern>/interviewscheduler/interviewScheduler</url-pattern> 
    </servlet-mapping> 
    <!-- Default page to serve --> 

    <welcome-file-list> 
    <welcome-file>InterViewScheduler.html</welcome-file> 
    </welcome-file-list> 

</web-app> 

Любые идеи, что я делаю неправильно.? Это срочно.

package interviewscheduler.client; 

import com.google.gwt.core.client.EntryPoint; 
import com.google.gwt.core.client.GWT; 
import com.google.gwt.user.client.Window; 
import com.google.gwt.user.client.rpc.AsyncCallback; 
import com.google.gwt.user.client.ui.RootLayoutPanel; 
import com.smartgwt.client.widgets.layout.VLayout; 

/** 
* Entry point classes define <code>onModuleLoad()</code>. 
*/ 
public class InterViewScheduler implements EntryPoint { 
    /** 
    * This is the entry point method. 
    */ 
    private InterviewSchedulerServiceAsync remoteObject=GWT.create(InterviewSchedulerService.class); 
    private VLayout wrapper=new VLayout(); 
    private VLayout headerArea=new Header(); 
    private VLayout contentArea=new ContentArea(); 

    public void onModuleLoad() { 
     Window.enableScrolling(true); 
     Window.setMargin("0px"); 
     remoteObject.loadStudentData(new AsyncCallback<Boolean>() { 
      @Override 
      public void onSuccess(Boolean result) { 

      RootLayoutPanel.get().add(drawWrapper()); 
      } 
      @Override 
      public void onFailure(Throwable caught) { 
       System.out.println("Failed*****************"); 
      } 
     }); 


    } 

    /** 
    * initialize the wrapper of the web site which holds all other content------Main Container 
    */ 

    public VLayout drawWrapper(){ 
     wrapper.setWidth100(); 
     wrapper.setHeight100(); 
     wrapper.setMargin(0); 
     wrapper.addMember(drawHeaderArea()); 
     wrapper.addMember(drawContentArea()); 
     return wrapper; 
    } 
    /** 
    * initialize the Header Area of the web site which contains Logo with Title and a logout button 
    */ 
    public VLayout drawHeaderArea(){ 
     headerArea.redraw(); 
     return headerArea; 
    } 

    /** 
    * initialize the Content Area of the web site which holds a main TabSet 
    */ 

    public VLayout drawContentArea(){ 
     contentArea.redraw(); 
     return contentArea; 
    } 

} 
+0

Как выглядит 'InterViewScheduler'? – enrybo

+0

Я обращаюсь к приложению с этим URL-адресом «http: // localhost: 8089/InterViewScheduler /» и страница выглядит пустым. –

+0

Некоторые ошибки появляются на консоли Javascript. например, –

ответ

0

Вы должны как-то показать свои данные в своем приложении. Все, что вы делаете прямо сейчас, вызывает кучу сервисов. На самом деле это довольно запутанно. Вы должны просто сделать все это одним звонком на сервер. Это спасет вас от многократных поездок и, скорее всего, избавит вас от некоторых неудачных вызовов.

+0

Я попытался сделать это одним звонком, но это действительно не сработало. –

+0

Прошу прощения, я просто не понимаю, что именно вы пытаетесь сделать. Вы делаете все эти вызовы RPC, для которых вы не используете никаких возвращаемых значений. Независимо от «бесполезных» вызовов RPC, вы должны иметь 'RootPanel.get(). Add (drawWrapper)' запускать, если первый вызов RPC преуспевает, но я не знаю, что он покажет, потому что с кодом, который я могу видеть , он будет пустым (если, конечно, не существует CSS или что-то еще, что здесь не показано). – enrybo

+0

Энрибо, спасибо за помощь. Я написал весь код GUI в двух классах. Контент и заголовок. Я инициализирую их оба в InterviewScheduler.java, вызывая их в drawHeader и drawContent соответственно и добавляя их в корневую панель с помощью метода drawWrapper. Все это отлично работает в режиме разработки. Во время работы с eclipse. Есть ли причина, по которой он не должен работать в tomcat, если он работает нормально в причале (встроенный сервер поставляется с плагином google eclipse)? –

0

Глупая ошибка ... Я не включаю необходимые библиотеки в каталог WEB-INF/lib. Это приводит к отказу от вызова RPC. Любые способы. Особая благодарность Энрибо. Технология отладки очень полезна.

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