나는 이와 유사한 질문을 여기에했습니다 : Best way to interact with EJBs in Java EE 응답이 좋았지 만, 여전히 찾고있는 결과를 얻지 못하고 있습니다. @PostConstruct 주석을 추가하고 주 클래스를 관리 빈으로 변환하여 주입을 사용할 수있을지라도 EJB는 여전히 호출되지 않습니다. 내가 가까이 있다고 생각하지만 Java EE 및 EJB와 관련된 몇 가지 기본 개념을 아직 파악하지 못하고 있습니다. 나는이 일을하기 위해 일종의 타이머 이벤트를 사용해야 할 수도 있다고 생각한다.EJB가 호출되지 않고 실행되지 않음
또 다시 내 문제는이 클래스를 실행하는 동안이 클래스를 한 번 이상 실행해야한다는 것입니다. URL에서 트위터 피드 결과를 얻고, 내용을 배열로 파싱 한 다음 첫 번째 값을 데이터베이스에 추가합니다. 데이터베이스 관리는 다른 EJB를 통해 수행되므로이 클래스에 액세스 할 때 일종의 주입을 사용해야한다. 원래 코드를 테스트하는 주요 메소드를 만들었지 만 정규 Java 클래스에서 EJB 메소드를 주입하고 호출하려고했기 때문에 Null 참조 예외가 발생했습니다.
이@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와 결론이 업데이트가 데이터베이스에 지속 얻을에 대해 실행해야 할 것입니다 :
여기에 관리 콩 PostConstruct의 주석 내 새로운 코드입니다.
'@ Startup'이 @ManagedBean과 함께 작동하는지 모르겠습니다. – Thomas
사람들을 혼란스럽게하지 않도록 질문에서 제거하겠습니다. 나는 그 특수한 주석을 달거나, 그리고 그 주석을 사용하지 않고 시도해 왔으며 결과에 영향을 미치지 않았다. – Randnum
어떻게 든 콩을 가져 옵니까? 그렇지 않으면 문제가 될 수 있습니다. '@ Startup'은 bean이 시작 시간에 (자동으로) 초기화되지만'@ Singleton' 빈에서만 작동하는 것처럼 보입니다. – Thomas