Мониторинг с AspectJ отсутствия вызова метода - PullRequest
0 голосов
/ 04 мая 2018

Я пытаюсь использовать AspectJ для обнаружения не вызванных методов в вызове метода. То есть я хотел бы знать, не вызывается ли метод в другом методе.

В той же строке возможно ли отслеживать вызов метода в блоке catch или finally? Я просто хотел бы знать, вызывается ли в методе JDBC метод close соединения.

Более подробно:

1) Я хотел бы использовать его для методов JDBC. В частности, в некоторых случаях в JDBC необходимо использовать транзакционный контекст при подключении к базе данных. В частности, такой транзакционный контекст задается путем вызова инструкций con.setAutoCommit (false); con.commit (); con.rollback () ;. Например, давайте посмотрим на фрагмент метода удаления клиента из БД:

public boolean deleteClient(String clientId){
Connection con = null;
boolean b=false;
…
try {
    con = DriverManager.getConnection(this.getProperties("url"));
    con.setAutoCommit(false);
     ….//Instructions for deleting the client 
    `con.commit();
   } catch (SQLException e) {
    e.printStackTrace();
    try {           
               if(con != null) 
                  con.rollback();       
             }catch(SQLException e1) {          
                    e1.printStackTrace();
             }
   }finally { 
        …if (con != null) 
              con.close();          
        …
  }
return b;

} `

Дело в том, что я хотел бы использовать AspectJ, чтобы сообщить своим студентам, не создают ли их методы, подобные этому, транзакционный контекст, то есть не вызывают ли они какие-либо инструкции: con.setAutoCommit (false); con.commit (); или con.rollback ();.

  1. Точно так же необходимо закрыть соединение, обычно в блоке finally. Я хотел бы посоветовать студентам, если они забудут вызвать метод close.

Есть идеи по любому из пунктов?

...