2017-03-07 15 views
0

eclipse IDEを使用して、Java Webサービス・サーバーを作成していました。そのサーバーは次のとおりです。Java Webサービス・クライアント・エラー

注:私はMATLABエンジンを使用しています見ることができるように私はUBUNTU

package com.tesis.service; 

import java.util.concurrent.ExecutionException; 
import java.util.concurrent.RejectedExecutionException; 

import com.mathworks.engine.*; 

/** 
* @author root 
* 
*/ 
public class CNNPredict 
{ 
    public String cNNPredict(int[] Image, int Height, int Width) throws Exception 
    { 
     String FilePath = "/home/user/Documents/MATLAB/Project"; 
     char[] CharFilePath = FilePath.toCharArray(); 
     MatlabEngine eng = MatlabEngine.startMatlab(); 
     eng.feval("cd", CharFilePath); 
     String result = eng.feval("CNNPredict",Image,Height,Width); 
     return result; 
    } 
} 

で働いています。 Matlab engine documentation。私は、cNNPredictメソッドが新しいJavaプロジェクトにコピーすることによって正しく動作していることを確認しました。 Javaエンジンを実行するために必要な.jarファイルを、Webサービスが配置されているDynamic Webプロジェクトに追加しました。

明らかにこのWebサービスは問題なく動作しますWeb Service working in local host 「CnnPredict」リンクをクリックすると、クラスのwsdlの方向がわかります。この方向はクライアントをサーバーにリンクするためのものです。

これはクライアントコードです:

public static void main(String[] args) throws IOException, CNNPredictExceptionException 
{ 
    CNNPredictStub stub = new CNNPredictStub(); 
    CNNPredict cnn = new CNNPredict(); 
    BufferedImage img = null; 
    System.out.println("Reading image ..."); 
    img = ImageIO.read(new File("/home/riosgamarra/Documents/MATLAB/TesisGamarrarios/101_ObjectCategories/laptop/image_0009.jpg")); 
    int[] UnrolledImage = convertToGray(img); 
    cnn.setImage(UnrolledImage); 
    cnn.setWidth(img.getWidth()); 
    cnn.setHeight(img.getHeight()); 
    System.out.println(stub.cNNPredict(cnn).get_return()); 

} 

は、それはエラーがなく、私はそれを実行すると、このエラーメッセージが現れます:

Exception in thread "main" org.apache.axis2.AxisFault: <faultstring>com/mathworks/engine/MatlabEngine</faultstring> 
    at org.apache.axis2.util.Utils.getInboundFaultFromMessageContext(Utils.java:513) 
    at org.apache.axis2.description.OutInAxisOperationClient.handleResponse(OutInAxisOperation.java:368) 
    at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:414) 
    at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:225) 
    at org.apache.axis2.client.OperationClient.execute(OperationClient.java:150) 
    at com.tesis.service.CNNPredictStub.cNNPredict(CNNPredictStub.java:197) 
    at com.tesis.client.CallWS.main(CallWS.java:40) 

私が行方不明です何?サーバープロジェクトに特別な権限を追加する必要はありますか?私は何が欠けていますか?

注:クライアントを実行してクラスをクリックし、[実行]> [Javaアプリケーション]を選択します。例外はあるが、

public class CNNPredict 
{ 
    public String cNNPredict(int[] Image, int Height, int Width) throws Exception 
    { 
     String FilePath = "/home/user/Documents/MATLAB/Project"; 
     char[] CharFilePath = FilePath.toCharArray(); 
     MatlabEngine eng = MatlabEngine.startMatlab(); 
     eng.feval("cd", CharFilePath); 
     String result = eng.feval("CNNPredict",Image,Height,Width); 
     return result; 
    } 
} 

がスタブない場合

+0

をメモとして使用しています。あなたはrootでコーディングしていますか?いいえ: - } – efekctive

+0

もっと具体的に教えてください。「ルートとしてコーディングする」とはどういう意味ですか? –

+0

/** * @author root * * /あなたが投稿したソースにあります。 – efekctive

答えて

0
at com.tesis.service.CNNPredictStub.cNNPredict(CNNPredictStub.java:197) 

です。まず、見るには正しいコードが必要です。 matlab apiはまっすぐです。私の推測では、スタブが間違った電話をしているということです。

関連する問題