2016-05-02 15 views
0

したがって、クロスドメイン対応のSpring-MVC RESTfulバックエンドがあります。これは単体テストで、私は自分のWebサービスを呼び出して正しいJSONを取得することができます。SmartGWT DataSourceがQueryStringをREST呼び出しに追加する

私は、SuperDevモードまたはClassic Dev Modeでうまく動作するSmartGWT 5.1pおよびGWT 2.7.0フロントエンドアプリケーションを用意しています。これを行うと、GWTプラグインで古いFirefox 24ブラウザを使用しているので、自分のアプリがうまく動作することがわかります。私のデータソースはRESTful Webサービスに関連付けられており、データソースを介してレコードを作成、取得、更新、および削除することができます。

私はMaven経由でアプリケーション全体をコンパイルして、うまく作成されたWARを得ることができます。このWARをTomcatサーバーに移動しようとしましたが、正しく展開されています。私はログにエラーのないtomcatで実行しているアプリを見ることができます。

最初のページに行くと、エラーなしでアプリが正常に表示されます。まず、フォームにユーザー名とパスワードを追加し、LoginCOntrollerまたはログインWebサービスに関連付けられたLoginDataSourceを呼び出すことになっています。

http://mydomain:8080/admin/login/user/myusername/pwd/mypassword

私が手::

は私が放火犯から見ることができることは、私は私のコールだけではなく、呼び出しを行うときということです

http://mydomain:8080/admin/login/user/myusername/pwd/mypassword?0 {この後の全体ロッタのもの)。 ..クエリ文字列私は推測します。

[送信]ボタンを押すと、SERVER TRANSPORTエラーが表示され、それ以上の情報は得られません。 OPTIONSとGETがパスワードの後に​​たくさんのクエリ文字列ナンセンスを追加する点を除いて、火かき棒から報告することは他にありません。

私はtomcatログを見ることができますが、そこには何のエラーもありません。私はWebサービスへのURL呼び出しも見ていない。

これに関するお手伝いがあれば幸いです。私は何年もSmartGWTを扱ってきており、しばらくの間はバックエンド開発に移行していましたが、SmartGWTのフロントエンドの仕事もしようとはしていません。しかし、私は今起こっていることについて少し錆びています。

ありがとうございます!

+0

あなたの 'LoginDataSource'のソースコードを追加できますか? – mam10eks

+0

コントローラのコードとサブミットを追加できますか? –

答えて

0

問題はクエリ文字列ではなく、データソースにある古いベースURLです。各データソースには、getServiceRootというメソッドがあります。

getServiceRootでは、ハードコードされた「localhost:8080」を使用していましたが、クライアントコードでは動作しません。つまり、ブラウザでアプリを実行している人は誰でも、「localhost」は自分のマシンを意味します。だから、私は次の操作を行うためにgetServiceRootを変更する必要がありました:

protected String getServiceRoot() 
{ 
    String baseUrl = "http://" + Window.Location.getHostName(); 
    return baseUrl + UrlConstants.SOME_URL_REST_ENDPOINT; 
} 

私は2つのWARの同じマシン上にあるので、 1つのWARが 他のWARは、フロントエンドであるSpring MVCのバックエンドRESTfulなウェブサービスで、SmartGWTクライアントアプリケーション

これは私がに実行する問題です...私は両方が同じであるという理由だけだと思いますマシンは、フロントエンドに、ちょうどそこにあるので、ローカルホスト上のコードを呼び出します。しかしブラウザには、それは他のマシンでもかまいません。

tomcatを実行しているマシンのパブリックIPアドレスをハードコードしておけば、クライアント側のSmartGWTは確実にRESTfulなWebサービスを見つけることができます。あるいは、私はSpring Env Profileを使ってそれを実現することもできました。しかし、両方のWARSが同じマシン上にあれば、私が作ったコードの変更はうまくいくはずです。

ブラウザのクライアント側コードは、ブラウザが実行されているマシンに関係していることを覚えています。

だから、これは修正されています。誰かが明確化を必要とするなら、私に知らせてください。

関連する問題