簡體   English   中英

Java Web Service客戶端錯誤

[英]Java Web Service client error

我正在使用Eclipse IDE創建Java Web服務服務器。 該服務器如下。

注意:我在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引擎。 Matlab引擎文檔 我通過將cNNPredict方法復制到一個新的Java項目中來檢查它是否正常工作,並且工作正常。 我將運行Java引擎所需的.jar文件添加到了Web服務所在的Dynamic Web項目中。

顯然,此Web服務可以正常運行。在本地主機上工作的Web服務如果單擊“ 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)

我想念什么? 我是否需要向服務器項目添加任何特殊權限? 我想念什么?

注意:我運行客戶端,單擊該類,然后選擇Run as> Java application。

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

是例外,但

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 api很簡單。 我的猜測是存根打錯了電話

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM