Этот пример показывает приложение, которое вычисляет цену облигаций от простой формулы.
Вы запускаете этот пример путем ввода следующих известных значений в простой графический интерфейс:
Купонный платеж — 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\java
CLASSPATH
и Путь к Сборке.
Скопированный ваш развертываемый архив в папку auto_deploy
вашего сервера.
Измененный файл main_config
вашего сервера, чтобы указать туда, где ваш MATLAB Runtime установлен.
Когда вы запускаете приложение калькулятора, необходимо видеть следующий вывод: