Лучший способ для веб-приложения вернуть документ XML на основе данных базы данных (ИСПОЛЬЗУЕТСЯ VXML)? - PullRequest
2 голосов
/ 22 апреля 2011

Я должен написать приложение VXML, которое сможет получить доступ к базе данных.Стандарт VXML позволяет вызывать внешний URL с параметрами, но в ответ я должен вернуть сгенерированный документ VXML, содержащий данные, взятые из базы данных, и другие теги VXML.

Не могли бы вы сказать мне, какой фреймворк будет лучшим для этого (JSF, чистые сервлеты с Hibernate или что-то другое, REST)?Пожалуйста, посоветуйте мне, какой метод будет наиболее простым для создания веб-приложения Java в этом месте назначения.

PS.Я хотел использовать JSF (с JPA), но я спрашиваю себя, есть ли возможность вызвать действие JSF Managed Bean с параметрами из этого управляемого компонента с помощью запроса GET Http.

Ответы [ 2 ]

4 голосов
/ 22 апреля 2011

Вы можете использовать комбинацию JAX-RS, JPA и JAXB для этого варианта использования.Вы можете посмотреть пример, который я разместил в своем блоге:

3 голосов
/ 26 апреля 2011

Если вы хотите просто подключиться к базе данных для VXML, Попробуйте использовать тег subdialog и вызвать сервлет (или JSP).

[Сервер VXML JSP (URL = http://hostname:port/app_name/sample.jsp)]

<?xml version="1.0" encoding="UTF-8" ?>
<%@ page language="java" contentType="application/voicexml+xml; charset=UTF-8"  pageEncoding="UTF-8" %>
<!DOCTYPE vxml PUBLIC "-//W3C//DTD VOICEXML 2.1//EN" "http://www.w3.org/TR/voicexml21/vxml.dtd">
<%@ page import="import java.sql.*" %>
<vxml version="2.1" xmlns="http://www.w3.org/2001/vxml">
<script><![CDATA[
<%
    out.println("var myObject = new Array();");

    // Set character encoding
    request.setCharacterEncoding("UTF-8");

    // Get VXML parameter.
    String input1 = request.getParameter("input1");
    String input2 = request.getParameter("input2");
    String input3 = request.getParameter("input3");

    ResultSet rs = null:

    //
    // Execute SQL
    //

    int i = 0;
    while(rs.next()) {
        String value1 = rs.getString("column1")
        String value2 = rs.getString("column2")
        String value3 = rs.getString("column3")

        out.println("myObject[" + i + "] = new Object();");
        out.println("myObject[" + i + "].column1 = " + value1 + ";");
        out.println("myObject[" + i + "].column2 = " + value2 + ";");
        out.println("myObject[" + i + "].column3 = " + value3 + ";");

        i++;
    }
    rs.close();

%>
]]></script>
<form id="response">
    <block>
        <return namelist="myObject" />
    </block>
</form>
</vxml>

[Клиент VXML Text]

<form id="database_connection_sample">
    <subdialog 
            name="database_connection_subdialog"  
            method="post" 
            srcexpr="'http://hostname:port/app_name/sample.jsp'"
            maxage="0"
            maxstale="0"
            namelist="input1 input2 input3">
        <filled>
            <!-- Get Result Object -->
            <assign name="resultObject" expr="database_connection_subdialog.myObject" />
        </filled>
    </subdialog>
    <catch event="error">
        <!-- Error Handling-->
    </catch>
    <block>
        <goto next="#next_form" />
    </block>
</form>

Пример получения выражения значения базы данных -> "resultObject [0] .column1"

...