これは私が実際の解決策を見つけることなく、ほぼ1週間対処しようとしてきた問題です。ここに問題があります。私の角度クライアント側のJava RESTサービスの応答に時間がかかりすぎる
私はこのように動作するCSVファイルを生成するためのボタンがあります。
- ユーザーがボタンをクリックします。
- POST要求がREST JAX-RS Webサービスに送信されます。
- Webサービスはデータベースクエリを起動し、クライアントに必要なすべての行を含むJSONを返します。
- AngularJSクライアントはJSONを受信してそれを処理し、CSVを生成します。 、問題は、私はJBOSSサーバのように落ちた2000行から.Startingデータの大きな金額を返却する必要があり、私のようにデータを送信するために闘争を開始したときに開始返すようにデータの低ボリュームがあるときここ
すべての良いですデータ容量の一定の限界に達しました(サーバーが稼動している私の日食はデータ伝送の終わりまで非常に遅くなります)。 問題は、テストの結果、データベースクエリではなく、デベロッパー設定でANGULARクライアントとJBOSSサーバーの両方が同じマシン上で実行されていても、時間がかかりますがデータの送信(サイズが2MBの3000行はクライアントに到達するのに約1分かかります)。 これは私のサーバー側のコードです:
@POST
@GZIP
@Path("/{id_user}/transactionsCsv")
@Produces(MediaType.APPLICATION_JSON)
@ApiOperation(value = "Transactions de l'utilisateur connecté sous forme CSV", response = TransactionDTO.class, responseContainer = "List")
@RolesAllowed(value = SecurityRoles.PORTAIL_ACTIVITE_RUBRIQUE)
public Response getOperationsCsv(@PathParam("id_user") long id_user,
@Context HttpServletRequest request,
@Context HttpServletResponse response,
final TransactionFiltreDTO filtre) throws IOException {
final UtilisateurSession utilisateur = (UtilisateurSession) request.getSession().getAttribute(UtilisateurSession.SESSION_CLE);
if (!utilisateur.getId().equals(id_user)) {
return genererReponse(new ResultDTO(Status.UNAUTHORIZED, null, null));
}
//database query
transactionDAO.getTransactionsDetailLimite(utilisateur.getId(), filtre);
//database query
List<Transaction> resultat = detailTransactionDAO.getTransactionsByUtilisateurId(utilisateur.getId(), filtre);
// To format the list to the export format
List<TransactionDTO> liste = Lists.transform(resultat, TransactionDTO.transactionToDTO);
return Response.ok(liste).build();
}
は、あなたたちはこの問題を引き起こしているかについてどんな考えを持っているか、この問題が発生しない場合がありますことを行うための別の方法を知っていますか?私は感謝されます 。 ありがとう:)
をここでJBOSSスレッドダンプのためのリンクです: http://freetexthost.com/y4kpwbdp1x
実際にペイロード(2MBのデータ転送)になる可能性があります。コンテンツをエンコードするヘッダーとともにサーバーから送信する前に、コンテンツをgzipでエンコードしようとすることができます。 –
既に試したことがありますが、2 Mbからのデータは80 Kバイトになりましたが、圧縮されていないほど遅いです –
問題はサーバー側にあると確信していますか?タイミングを測定しましたか?カール、サーバーの応答のJavaScript処理が問題ではないことを確認するには?エンドポイントの名前がtransactionsCsvの場合、サーバーでJSONが生成されるのはなぜですか? CSVはどこで生成されていますか? –