Oracle Service Bus 12c-如何在Java标注中传递数组数据类型

时间:2019-02-19 04:25:09

标签: oracle12c weblogic12c osb

我创建了一个Java类,该类的参数为String []数据类型,但不知道如何传递数组。我尝试过的是将数组放在单引号内,但是当我运行代理服务时,它返回空值。

请求参数:

@app.route('/login', methods=['GET','POST']) 
@app.route('/login2', methods=['GET','POST'])
def login():
    error = None
    if request.method =='POST':
        un = request.form['username']
        pw = request.form['password']
        #check if username and password is correct and store the result in check
        if check == "error":
            error = 'Invalid Credentials. Please try again.'
        else:
            return redirect(url_for('login2'))
    return render_template('login.html', error = error)
if __name__ == '__main__':
   app.run(debug = True)
def login2():
    error = None
    if request.method =='POST':
        un = request.form['username']
        pw = request.form['password']
        #check if username and password is correct and store the result in check
        if check=="error":
            error = 'Invalid Credentials. Please try again.'
        else:
            return redirect(url_for('home'))
    return render_template('login2.html', error=error)

enter image description here

我设置输出的方式就是这样

java.lang.String = 'EDGF.FMW_SELECT_TABLE_NAME'
java.lang.String[] = '{"jdbc:oracle:thin:@IP:PORT:SID", "User", "Password"}'
java.lang.String[] = '{$body/oraf:Order/oraf:var1,$body/oraf:Order/oraf:var2}'

enter image description here

我尝试使用相同的参数运行Java类,并返回结果。

运行Java类的结果

<oraf:queryResult>{data($resultSetTable)}</oraf:queryResult>

运行代理服务的响应

, 49451234, , , 2019-02-13 00:00:00.0, , 12341234, , null,

2 个答案:

答案 0 :(得分:0)

要将数组放入JavaCallout中,可以使用fn:tokenize函数,例如:

例如,通过使用assign(“ var1,var2,var3”)创建$ variable ealier,然后将其粘贴到您的参数下面的行:
fn:tokenize($ variable,',')

答案 1 :(得分:0)

我同意使用 fn:tokenize()。但是,在我的 Windows 操作系统上的 OSB 环境 (12c IntegratedWeblogicServer) 中,我无法使用 OSB 变量将结果数组(实际上:Xquery 序列)传递给 JavaCallout。当我将 fn:tokenize() 放在 JavaCallout 本身的输入参数表达式中时,它开始为我工作。