Этот пример показывает приложение, которое вычисляет цену облигаций от простой формулы.
Вы запускаете этот пример путем ввода следующих известных значений в простой графический интерфейс:
Купонный платеж — C
Количество платежей — N
Процентная ставка — i
Значение связи или опции в зрелости — M
Приложение вычисляет цену (P) на основе следующего уравнения:
P = C * ( (1 - (1 + i)^-N) / i ) + M * (1 + i)^-N
Инструмент Оценки Связи демонстрирует следующие функции MATLAB® Production Server™:
Развертывание простой функции MATLAB с постоянным числом входных параметров и одного вывода
Развертывание функции MATLAB с простым графический интерфейсом пользователя выходит напрямую для ввода данных
Используя dispose(), чтобы освободить системные ресурсы
Реализуйте Инструмент Оценки Связи в MATLAB путем записи следующего кода. Назовите код pricecalc.m.
Пример кода доступен в .MPS_INSTALL\client\java\examples\BondPricingTool\MATLAB
function price = pricecalc(value_at_maturity, coupon_payment,...
interest_rate, num_payments)
C = coupon_payment;
N = num_payments;
i = interest_rate;
M = value_at_maturity;
price = C * ( (1 - (1 + i)^-N) / i ) + M * (1 + i)^-N;
endСоздать развертываемый архив для этого примера:
Из MATLAB выберите Production Server Compiler App.
В списке Application Type выберите Deployable Archive.
В поле Exported Functions добавьте pricecalc.m.
pricecalc.m расположен в .MPS_INSTALL\client\java\examples\BondPricingTool\MATLAB
Под Application Information, изменение pricecalc к BondTools.
Нажмите Package.
Сгенерированный развертываемый архив, BondTools.ctf расположен в for_redistribution_files_only папки проекта.
Загрузите MATLAB Runtime, в случае необходимости, по https://www.mathworks.com/products/compiler/mcr. Смотрите Загрузку и Установку MATLAB Runtime для получения дополнительной информации.
Создайте сервер с помощью mps-new. Смотрите Создают Сервер для получения дополнительной информации.
Если вы уже не сделали так, задайте местоположение MATLAB Runtime к серверу путем редактирования конфигурационного файла сервера, main_config и определения пути для --mcr-root. Смотрите Редактирование Конфигурационный файл для деталей.
Скопируйте файл BondTools.ctf в папку auto_deploy на сервере для хостинга.
Создайте совместимый клиент, соединяют интерфейсом и задают методы в Java®, чтобы совпадать с функцией MATLAB pricecalc.m, размещенный сервером как BondTools.ctf, с помощью инструкций в этом разделе.
Дополнительные файлы Java также включены, которые типичны для автономного приложения. Можно найти файлы в качестве примера в .MPS_INSTALL\client\java\examples\BondPricingTool\Java
| Этот код Java... | Обеспечивает эту функциональность... |
|---|---|
BondPricingTool.java | Запускает приложение калькулятора. Значения переменных функции оценки объявляются в этом классе. |
BondTools.java | Задает интерфейс метода pricecalc, который позже используется, чтобы соединиться с сервером, чтобы вызвать pricecalc.m |
BondToolsFactory.java | Фабрика, которая создает новые экземпляры BondTools |
BondToolsStub.java | Класс Java, который реализует фиктивный метод |
BondToolsStubFactory.java | Фабрика, которая возвращает новые экземпляры BondToolsStub |
RequestSpeedMeter.java | Отображает графический интерфейс и принимает входные параметры с помощью Java классы Swing |
ServerBondToolsFactory.java | Фабрика, которая создает новые экземпляры MWHttpClient и создает прокси, который обеспечивает реализацию интерфейса BondTools и предоставляет доступ к pricecalc.m, размещенному сервером |
При разработке кода Java отметьте следующие существенные задачи, описанные в разделах, которые следуют. Для получения дополнительной информации о клиентах, кодирующих основы и лучшые практики, смотрите, что Клиент Java Кодирует Лучшые практики.
Эта документация ссылки определенные фрагменты клиентского кода. Можно найти полный клиентский код Java в .MPS_INSTALL\client\java\examples\BondPricingTool\Java
Чтобы использовать функции MATLAB, вы задали на Шаге 1: Запишите код MATLAB, объявите соответствующую сигнатуру метода Java в интерфейсе BondTools.java:
interface BondTools {
double pricecalc (double faceValue,
double couponYield,
double interestRate,
double numPayments)
throws IOException, MATLABException;
}Этот интерфейс создает массив примитивных типов double, соответствуя типам примитивов MATLAB (Double, в MATLAB, если явным образом не объявлено) в pricecalc.m. Один к одному отображению существует между входными параметрами и в функции MATLAB и в интерфейсе Java, интерфейс задает совместимый тип double. Это соответствие между подписями Java и MATLAB демонстрирует инструкции, перечисленные в Клиенте Java, Кодирующем Лучшые практики.
В классе ServerBondToolsFactory выполните типичную клиентскую настройку MATLAB Production Server:
Инстанцируйте MWClient с экземпляром MWHttpClient:
...
private final MWClient client = new MWHttpClient();
Вызовите createProxy на новом клиентском экземпляре. Задайте номер порта (9910) и развертываемое архивное имя (BondTools), сервер размещает в папке auto_deploy:
...
public BondTools newInstance () throws Exception
{
mpsUrl = new URL("http://user1.dhcp.mathworks.com:9910/BondTools");
return client.createProxy(mpsUrl, BondTools.class);
}
...
Это приложение использует Шаблон "фабрика", чтобы инкапсулировать создание нескольких типов объектов.
Любое время вы создаете объекты — и поэтому выделяете ресурсы — гарантирует, что вы освобождаете те ресурсы с помощью dispose().
Например, обратите внимание, что в ServerBondToolsFactory.java, вы избавляетесь от экземпляра MWHttpClient, в котором вы создали, Инстанцируют MWClient, Создают Прокси и Задают Развертываемый Архив, когда это больше не необходимо.
Кроме того, отметьте вызовы dispose(), чтобы очистить фабрики в BondToolsStubFactory.java и BondTools.java.
Прежде чем вы попытаетесь создать и запустить ваш клиентский код, гарантировать, что вы сделали следующее:
Добавленный mps_client.jar () на ваш Java $MPS_INSTALL\client\javaCLASSPATH и Путь к Сборке.
Скопированный ваш развертываемый архив в папку auto_deploy вашего сервера.
Измененный файл main_config вашего сервера, чтобы указать туда, где ваш MATLAB Runtime установлен.
Когда вы запускаете приложение калькулятора, необходимо видеть следующий вывод:
