2017-03-07 237 views
0

我正在使用eclipse IDE創建Java Web服務服務器。該服務器是以下。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。我通過將它複製到一個新的Java項目中來檢查cNNPredict方法是否正常工作,並且它工作正常。 我將運行java引擎所需的.jar文件添加到Web服務所在的動態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) 

什麼,我缺少什麼?我是否需要爲服務器項目添加任何特殊權限?我錯過了什麼?

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

+0

作爲旁註。你是否以root身份編碼?不好: - } – efekctive

+0

請問您是否更具體,請不要了解「以root身份編碼」是什麼意思。謝謝 –

+0

/** * @author root * * /它在你張貼的來源 – efekctive

回答

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很簡單。我的猜測是,這個存根造成了錯誤的電話