MWHttpClient
ClassThis example shows how to write a MATLAB® Production Server™ client using the Java® client API. In your Java code, you will:
Define a Java interface that represents the MATLAB function.
Instantiate a proxy object to communicate with the server.
Call the deployed function in your Java code.
To create a Java MATLAB Production Server client application:
Create a new file called MPSClientExample.java
.
Using a text editor, open MPSClientExample.java
.
Add the following import statements to the file:
import java.net.URL; import java.io.IOException; import com.mathworks.mps.client.MWClient; import com.mathworks.mps.client.MWHttpClient; import com.mathworks.mps.client.MATLABException;
Add a Java interface that represents the deployed MATLAB function.
The interface for the addmatrix
function
function a = addmatrix(a1, a2)
a = a1 + a2;
looks like this:
interface MATLABAddMatrix { double[][] addmatrix(double[][] a1, double[][] a2) throws MATLABException, IOException; }
When creating the interface, note the following:
You can give the interface any valid Java name.
You must give the method defined by this interface the same name as the deployed MATLAB function.
The Java method must support the same inputs and outputs supported by the MATLAB function, in both type and number. For more information about data type conversions and how to handle more complex MATLAB function signatures, see Java Client Programming (MATLAB Production Server).
The Java method must handle MATLAB exceptions and I/O exceptions.
Add the following class definition:
public class MPSClientExample { }
This class now has a single main method that calls the generated class.
Add the main()
method to the application.
public static void main(String[] args) { }
Add the following code to the top of the main()
method:
double[][] a1={{1,2,3},{3,2,1}}; double[][] a2={{4,5,6},{6,5,4}};
These statements initialize the variables used by the application.
Instantiate a client object using the MWHttpClient
constructor.
MWClient client = new MWHttpClient();
This class establishes an HTTP connection between the application and the server instance.
Call the client object’s createProxy
method to create a dynamic
proxy.
You must specify the URL of the deployable archive and the name of your interface
class
as arguments:
MATLABAddMatrix m = client.createProxy(new URL("http://localhost:9910/addmatrix"), MATLABAddMatrix.class);
The URL value ("http://localhost:9910/addmatrix"
) used to
create the proxy contains three parts:
the server address (localhost
).
the port number (9910
).
the archive name (addmatrix
)
For more information about the createProxy
method, see the
Javadoc included in the
folder.
matlabroot
/toolbox/compiler_sdk/mps_client
Call the deployed MATLAB function in your Java application by calling the public method of the interface.
double[][] result = m.addmatrix(a1,a2);
Call the client object’s close()
method to free system
resources.
client.close();
Save the Java file.
The completed Java file should resemble the following:
import java.net.URL; import java.io.IOException; import com.mathworks.mps.client.MWClient; import com.mathworks.mps.client.MWHttpClient; import com.mathworks.mps.client.MATLABException; interface MATLABAddMatrix { double[][] addmatrix(double[][] a1, double[][] a2) throws MATLABException, IOException; } public class MPSClientExample { public static void main(String[] args){ double[][] a1={{1,2,3},{3,2,1}}; double[][] a2={{4,5,6},{6,5,4}}; MWClient client = new MWHttpClient(); try{ MATLABAddMatrix m = client.createProxy(new URL("http://localhost:9910/addmatrix"), MATLABAddMatrix.class); double[][] result = m.addmatrix(a1,a2); // Print the resulting matrix printResult(result); }catch(MATLABException ex){ // This exception represents errors in MATLAB System.out.println(ex); }catch(IOException ex){ // This exception represents network issues. System.out.println(ex); }finally{ client.close(); } } private static void printResult(double[][] result){ for(double[] row : result){ for(double element : row){ System.out.print(element + " "); } System.out.println(); } } }
Compile the Java application, using the javac
command or use the
build capability of your Java IDE.
For example, enter the following:
javac -classpath "matlabroot
\toolbox\compiler_sdk\mps_client\java\mps_client.jar" MPSClientExample.java
Run the application using the java
command or your IDE.
For example, enter the following:
java -classpath .;"matlabroot
\toolbox\compiler_sdk\mps_client\java\mps_client.jar" MPSClientExample
The application returns the following at the console:
5.0 7.0 9.0 9.0 7.0 5.0