Я работаю над Eclipse и хочу создать корпоративное приложение, используя Glassfish и MySQL.
Я создал проект приложения для предприятия с модулями EJB и WEB с именами WeatherEJB и WeatherWeb.
В проекте WeatherEJB я сгенерировал сущности из таблиц, используя JPA, а также создал удаленный сессионный компонент без сохранения состояния, называемый CountryDAO, который реализует CountryDAOBean, чтобы обернуть созданную сущность Country.
В проекте WeatherWeb я добавил ссылки на проект WeatherEJB в ванную Java Build, ссылки на проекты и зависимости модулей.
Затем в проекте WeatherWeb я создал управляемый bean-компонент с именем CountryController (в области запроса), который выглядит следующим образом:
import javax.ejb.EJB;
import model.Country;
import service.CountryDAO;
public class CountryController
{
@EJB
CountryDAO countryDao;
private Country country;
public CountryController()
{
country = new Country();
}
public String saveCountry()
{
String returnValue = "success";
try
{
countryDao.saveCountry(country);
}
catch (Exception e){
e.printStackTrace();
returnValue = "failure";
}
return returnValue;
}
public Country getCountry(){
return country;
}
public void setCountry(Country country){
this.country = country;
}
}
Хотя я могу успешно развернуть приложение на Glassfish, при попытке получить доступ к jsf, использующему CountryController, я получаю следующие ошибки:
type Exception report
message
descriptionThe server encountered an internal error () that prevented it from fulfilling this request.
exception
javax.servlet.ServletException: javax.faces.FacesException: com.sun.enterprise.InjectionException: Exception attempting to inject Unresolved Ejb-Ref managedBeans.CountryController/countryDao@jndi: service.CountryDAO@null@service.CountryDAO@Session@null into class managedBeans.CountryController
root cause
javax.faces.FacesException: javax.faces.FacesException: com.sun.enterprise.InjectionException: Exception attempting to inject Unresolved Ejb-Ref managedBeans.CountryController/countryDao@jndi: service.CountryDAO@null@service.CountryDAO@Session@null into class managedBeans.CountryController
root cause
javax.faces.FacesException: com.sun.enterprise.InjectionException: Exception attempting to inject Unresolved Ejb-Ref managedBeans.CountryController/countryDao@jndi: service.CountryDAO@null@service.CountryDAO@Session@null into class managedBeans.CountryController
root cause
com.sun.enterprise.InjectionException: Exception attempting to inject Unresolved Ejb-Ref managedBeans.CountryController/countryDao@jndi: service.CountryDAO@null@service.CountryDAO@Session@null into class managedBeans.CountryController
root cause
javax.naming.NameNotFoundException: service.CountryDAO#service.CountryDAO not found
Что мне не хватает? или что я делаю не так?