Я задавал подобный вопрос к этому здесь: Лучший способ взаимодействия с EJB в Java EE И ответ был отличным, но я все еще не получаю результаты, которые я ищу.EJB по-прежнему не вызывается, хотя я добавил аннотацию @PostConstruct и преобразовал основной класс в управляемый компонент, чтобы использовать инъекцию.Я думаю, что я близок, но я все еще не понимаю некоторые фундаментальные концепции, связанные с Java EE и EJB.Я думаю, что мне, возможно, придется использовать какое-то событие таймера, чтобы сделать эту работу.
Опять же, моя проблема в том, что я хочу, чтобы этот класс выполнялся хотя бы один раз во время работы.Он получает результаты в Твиттере с URL-адреса, анализирует содержимое в массиве и затем добавляет первое значение в базу данных.Управление базой данных осуществляется с помощью другого EJB, поэтому мне нужно использовать какое-то внедрение для доступа к этому классу.Первоначально я создал основной метод для тестирования кода, но я получал исключения из ссылки на Null, потому что я пытался внедрить и вызвать метод EJB из обычного Java-класса.
Вот мой новый код с управляемыми bean-компонентами и аннотацией PostConstruct:
@ManagedBean
public class Driver {
@EJB RSSbean rssbean;
@PostConstruct
public void initURL() throws IOException, JSONException{
System.setProperty("http.proxyHost", "proxya..com");
System.setProperty("http.proxyPort", "8080");
/////////////auth code///////////////auth code/////////////////
String username = System.getProperty("proxy.authentication.username");
String password = System.getProperty("proxy.authentication.password");
if (username == null)
{
Authenticator.setDefault(new ProxyAuthenticator("s", "w"));
}
///////////////end auth code/////////////////////////////////end
URL twitterSource = new URL("http://search.twitter.com/search.json?q=news");
ByteArrayOutputStream urlOutputStream = new ByteArrayOutputStream();
IOUtils.copy(twitterSource.openStream(), urlOutputStream);
String urlContents = urlOutputStream.toString();
JSONObject thisobject = new JSONObject(urlContents);
JSONArray names = thisobject.names();
JSONArray asArray = thisobject.toJSONArray(names);
JSONArray resultsArray = thisobject.getJSONArray("results");
JSONObject(urlContents.trim());
JSONObject jsonObject = resultsArray.getJSONObject(0);
String twitterText = jsonObject.getString("text");
System.out.println("Calling rssbean from Driver");
**rssbean.updateDatabase("twitterText");**
}}
Нижняя строка с rssbean.updateDatabase - это то, что нужно выполнить, чтобы обновления сохранялись в базе данных.,