Инструмент оценки связи для клиента Java

Этот пример показывает приложение, которое вычисляет цену облигаций от простой формулы.

Вы запускаете этот пример путем ввода следующих известных значений в простой графический интерфейс:

  • Купонный платеж — C

  • Количество платежей — N

  • Процентная ставка — i

  • Значение связи или опции в зрелости — M

Приложение вычисляет цену (P) на основе следующего уравнения:

P = C * ( (1 - (1 + i)^-N) / i ) + M * (1 + i)^-N

Цели

Инструмент Оценки Связи демонстрирует следующие функции MATLAB® Production Server™:

  • Развертывание простой функции MATLAB с постоянным числом входных параметров и одного вывода

  • Развертывание функции MATLAB с простым графический интерфейсом пользователя выходит напрямую для ввода данных

  • Используя dispose(), чтобы освободить системные ресурсы

Шаг 1: запишите код MATLAB

Реализуйте Инструмент Оценки Связи в 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

Шаг 2: создайте развертываемый архив с приложением Production Server Compiler

Создать развертываемый архив для этого примера:

  1. Из MATLAB выберите Production Server Compiler App.

  2. В списке Application Type выберите Deployable Archive.

  3. В поле Exported Functions добавьте pricecalc.m.

    pricecalc.m расположен в MPS_INSTALL\client\java\examples\BondPricingTool\MATLAB.

  4. Под Application Information, изменение pricecalc к BondTools.

  5. Нажмите Package.

Сгенерированный развертываемый архив, BondTools.ctf расположен в for_redistribution_files_only папки проекта.

Шаг 3: совместно используйте развертываемый архив на сервере

  1. Загрузите MATLAB Runtime, в случае необходимости, по https://www.mathworks.com/products/compiler/mcr. Смотрите Загрузку и Установку MATLAB Runtime для получения дополнительной информации.

  2. Создайте сервер с помощью mps-new. Смотрите Создают Сервер для получения дополнительной информации.

  3. Если вы уже не сделали так, задайте местоположение MATLAB Runtime к серверу путем редактирования конфигурационного файла сервера, main_config и определения пути для --mcr-root. Смотрите Редактирование Конфигурационный файл для деталей.

  4. Запустите экземпляр сервера и проверьте состояние сервера.

  5. Скопируйте файл BondTools.ctf в папку auto_deploy на сервере для хостинга.

Шаг 4: создайте клиентский код Java

Создайте совместимый клиент, соединяют интерфейсом и задают методы в 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, который реализует фиктивный метод pricecalc Java. Создание тупикового метода является методом, который позволяет, чтобы вычисления и обрабатывающий были добавлены к приложению в более позднее время.

BondToolsStubFactory.javaФабрика, которая возвращает новые экземпляры BondToolsStub
RequestSpeedMeter.javaОтображает графический интерфейс и принимает входные параметры с помощью Java классы Swing
ServerBondToolsFactory.javaФабрика, которая создает новые экземпляры MWHttpClient и создает прокси, который обеспечивает реализацию интерфейса BondTools и предоставляет доступ к pricecalc.m, размещенному сервером

При разработке кода Java отметьте следующие существенные задачи, описанные в разделах, которые следуют. Для получения дополнительной информации о клиентах, кодирующих основы и лучшые практики, смотрите, что Клиент Java Кодирует Лучшые практики.

Эта документация ссылки определенные фрагменты клиентского кода. Можно найти полный клиентский код Java в MPS_INSTALL\client\java\examples\BondPricingTool\Java.

Объявите сигнатуры методов Java, совместимые с функциями MATLAB, которые вы развертываете

Чтобы использовать функции 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, Кодирующем Лучшые практики.

Инстанцируйте MWClient, создайте прокси и задайте развертываемый архив

В классе ServerBondToolsFactory выполните типичную клиентскую настройку MATLAB Production Server:

  1. Инстанцируйте MWClient с экземпляром MWHttpClient:

    ...
        private final MWClient client = new MWHttpClient();
    
    

  2. Вызовите 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.

Шаг 5: создайте клиентский код и запустите пример

Прежде чем вы попытаетесь создать и запустить ваш клиентский код, гарантировать, что вы сделали следующее:

Когда вы запускаете приложение калькулятора, необходимо видеть следующий вывод: