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;
}
}
がスタブない場合
をメモとして使用しています。あなたはrootでコーディングしていますか?いいえ: - } – efekctive
もっと具体的に教えてください。「ルートとしてコーディングする」とはどういう意味ですか? –
/** * @author root * * /あなたが投稿したソースにあります。 – efekctive