Java Web服务客户端错误

时间:2017-03-07 21:11:07

标签: java eclipse matlab web-services

我正在使用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 engine documentation。我通过将cNNPredict方法复制到一个新的Java项目来检查cNNPredict方法是否正常工作。 我将运行java引擎所需的.jar文件添加到Web服务所在的Dynamic Web项目中。

显然此网络服务运行没有问题Web Service working in local host 如果我点击" CnnPredict" link我得到了类的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&gt; Java应用程序。

1 个答案:

答案 0 :(得分:0)

 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很简单。我的猜测是存根正在拨打错误的电话