Что вызывает ошибку CGLIC: невозможно создать подкласс класса [ClassPath] для аннотации @Transactional, так как WildFly v15 - PullRequest
0 голосов
/ 28 мая 2019

Я использую Wildfly V16 для запуска приложения java (1.8) + Spring (4.1.3) в среде Openshift Online (v3).

В приложении есть класс (GiftcardWebService.java) с аннотацией @Service, а его методы в основном используются аннотацией @Transactional:

Класс контроллера:

@Controller
@RequestMapping(value = "/BusinessController/")
public BusinessController {
   ...
   @Autowired
   private GiftcardWebService service;

   ...
}

GiftcardWebService.java

@Service
public GiftcardWebService {
  ....

@Transactional 
public Map<String, String> getGiftcardForm (....) {
   ....
  }
 ...
}

Во время развертывания в Wildfly v15 или v16 возникает ошибка:

 Could not generate CGLIB subclass of class [class com.liquibil.controllers.GiftcardWebService]: Common causes of this problem include using a final class or a non-visible class.

Интересно, что этот же код работает для Wildfly 10–14.aformentioned error) при развертывании в Wildfly v15 или v16.

Я погуглил эту проблему, нашел некоторые обсуждения, но в основном для Springframework версии 3, когда CGLIB требует конструктора класса по умолчанию.Моя версия Spring 4.1.3.

Я также удалил единственную «конечную» переменную (в логгере), но это не помогло.Я понятия не имею, что в этом контексте можно квалифицировать как невидимый класс.

Я также удалил все аннотации @Transactional в GiftcardWebService.java, затем ошибка исчезла (это подтверждает, что ошибка произошла из-за @Transactional)

...