私はGWTの初心者です。現在、 RESTからのデータを消費し、それらの詳細をGWTに表示するWebアプリケーションをSpringで作成しようとしています。そこで、 クライアントにSpring RestTemplateを使用して(リクエストを作成し、Javaオブジェクトにアンマーシャリングするため)、依存性注入をSpring(アノテーション)に任せました。私はこれらすべてをGWT-2.4プラグインを備えたEclipseIDEで開発しました。
以下のケースでこのWebアプリケーションを起動しようとしましたが、指定された問題に直面しています。
ケース#1: アプリケーションをGoogle Webアプリケーションとして起動しようとすると(右クリック->実行-> Google Webアプリケーション)、依存性注入が行われず、プロパティ参照にNullPointerExceptionがスローされます。私がGoogleアプリとして起動しているとき、コンテキストが読み込まれないため、Bean-DIが発生していないと思います。
ケース#2: Tomcatサーバーで実行しようとすると、すべてのBeanの作成と依存性注入が発生しますが、GWTのエントリポイントにはなりません。コントローラーを明示的に定義していません。これは、GWTがコントローラーを処理することを考えているためです(Google Web App Serverで実行する場合と同様)。
注:アプリケーションは、GWTモジュールを個別に実行している場合(WebServiceからのデータを消費しない場合)に完全に機能し、Spring RestTemplateモジュールでさえRestServiceを消費し、System.Out.println()に値を表示します。
中心的な問題は、GWTとSpringDIの間の相互作用を作成することです。
Project.gwt.xml:
<inherits name='com.google.gwt.user.User'/>
<inherits name='com.google.gwt.user.theme.clean.Clean'/>
<entry-point class='com.abc.XXXX.gwt.ui.client.XXXX'/>
<source path='client'/>
<source path='shared'/>
<source path='service'/>
ApplicationContext.xml:
<context:component-scan base-package="com.serco.XXXX" />
<context:property-placeholder location="classpath:ClientConfig.properties" />
<bean id="clientSkillService" class="com.abc.XXXX.gwt.ui.service.clientService.impl.ClientSkillService"
p:hostName="${rest.hostName}"
p:portNumber="${rest.port}"
p:userName="${rest.userName}"
p:password="${rest.password}">
</bean>
<bean id="restTemplate" class="org.springframework.web.client.RestTemplate">
<property name="messageConverters">
<list>
<bean class="org.springframework.http.converter.xml.MarshallingHttpMessageConverter">
<constructor-arg>
<bean class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
<property name="classesToBeBound">
<list>
<value>com.abc.XXXX.gwt.ui.shared.SkillDetailList</value>
<value>com.abc.XXXX.gwt.ui.shared.SkillDetail</value>
</list>
</property>
</bean>
</constructor-arg>
</bean>
</list>
</property>
</bean>
Web.xml:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath:ApplicationContext.xml
</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
親切にあなたの提案、それを機能させる方法を提供してください。
前もって感謝します。
更新: HTMLファイル
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title>XYZ UI DASHBOARD</title>
<script type="text/javascript" language="javascript" src="RTSocketDataMonitor/RTSocketDataMonitor.nocache.js"></script>
</head>
<body>
<h1 align="center">XYZ UI DASHBOARD</h1>
<div align="center" id="grid_tbl"></div>
</body>
エントリポイントクラス:XXXX.java
public class XXXX implements EntryPoint {
/*entry point method*/
public void onModuleLoad() {
//Creation of DialogBoxes and Panel here
DialogBox dialogBox;
//Creation of Composite Derived Class which has DataGrid, DataList, Columnprovider properties to render Details in Table format
SkillDetailPaginationHandler<SkillDetail> skd =
new SkillDetailPaginationHandler<SkillDetail>();
//added VertiCal Panel in Dialogue Boxes and set it in RootPanel
RootPanel.get("grid_tbl").add(dialogBox);
}
}
GWTコンパイル済みWARの内容:
->Root
-->XXXX(Folder in the Project Name)
-->gwt(Folder)
-->XXXX.nocache.js
-->host.html
-->WEB-INF (Folder)
--> deploy
--> lib
--> web.xml