Thank you very much, but I am not using production.There is a setQueryTimeout method in the% Net.Remote.Java.JDBCGateway class of IRIS, but this method does not exist in Ensemble2016, what should I do?

The code in IRIS is as follows:
ClassMethod jdbc() As %String
    #dim %JDBCGateway as %Net.Remote.Java.JDBCGateway
    s SQLConName="INC0001"
    s gc=$$GetJConnection^%apiGTW(SQLConName)
    i gc="" QUIT "-1^"_$$$ERROR($$$GTWCConnectionError)
    set myquery= "select top 1 * from SQLUser.OE_OrdTeeth"
    q:myquery="" "-1^sql can't empty"
    /// prepare sql
    s command=$ZCONVERT($p(myquery," ",1),"U") 
    If (command["CALL") {
        s sqlhstmt=%JDBCGateway.prepareCall(gc,myquery)
    } else {
        s sqlhstmt=%JDBCGateway.prepareStatement(gc,myquery)
      if (sqlhstmt < 0) {
        q "-1^"_%JDBCGateway.getErrorText()
       s sqlerr=%JDBCGateway.setQueryTimeout(sqlhstmt,5)
    if sqlerr<0{
        q "-1^"_%JDBCGateway.getErrorText()
    s sqlerr=%JDBCGateway.execQuery(sqlhstmt)
    if sqlerr<0{
        q "-1^"_%JDBCGateway.getErrorText()
    /// dump result 
    s colcount=%JDBCGateway.getColumnCount(sqlhstmt)
    while hasdata = 1 {
        s tpseudoid=%JDBCGateway.getString(sqlhstmt,1)
    } //matches while hasdata
    d %JDBCGateway.removeResultSet(gc)

Due to objective reasons, I cannot upgrade to IRIS.Can you give me an example of setting query timeout through JDBC in Ensemble2016.

thank you very much!

In IRIS as you said, but there is no such method in Ensemble2016, I use Ensemble2016

 Stop the currently running production in an Ensemble namespace:
   Do ##class(Ens.Director).StopProduction()

   Start the specified production in the Ensemble namespace, as long as no other production is running:
   Do ##class(Ens.Director).StartProduction("myProduction")

Clean up a Troubled instance of a running production so that you can run a new instance in the Ensemble namespace:
  Do ##class(Ens.Director).RecoverProduction()