I am using the Twitter4J library to use the Twitter API. I'm using this library in an EJB without status like this:
@Stateless
public class TwitterSearchBean implements TwitterSearchBeanLocal {
@Resource(name = "TWITTER_OAUTH_CONSUMER_KEY")
private String oauthConsumerKey;
@Resource(name = "TWITTER_OAUTH_CONSUMER_SECRET")
private String oauthConsumerSecret;
@Resource(name = "TWITTER_OAUTH_ACCESS_TOKEN")
private String oauthAccessToken;
@Resource(name = "TWITTER_OAUTH_ACCESS_TOKEN_SECRET")
private String oauthAccessTokenSecret;
private Twitter twitter;
private final TweetDataMapper mapper = new TweetDataMapper();
@PostConstruct
public void init() {
ConfigurationBuilder cb = new ConfigurationBuilder();
cb.setDebugEnabled(true).setOAuthConsumerKey(oauthConsumerKey)
.setOAuthConsumerSecret(oauthConsumerSecret)
.setOAuthAccessToken(oauthAccessToken)
.setOAuthAccessTokenSecret(oauthAccessTokenSecret);
TwitterFactory tf = new TwitterFactory(cb.build());
twitter = tf.getInstance();
}
@Override
public List<Tweet> search(final String keyword) {
Query query = new Query(keyword + " -filter:retweets -filter:links -filter:replies -filter:images");
query.setCount(20);
query.setLocale("en");
query.setLang("en");
try {
QueryResult queryResult = twitter.search(query);
List<Status> tweetsStatus = queryResult.getTweets();
Collection<Tweet> tweets = mapper.transform(tweetsStatus);
return (List<Tweet>) tweets;
} catch (TwitterException e) {
Logger.getLogger(getClass().getName()).log(Level.SEVERE, "exception caught", e);
throw new RuntimeException(e);
}
}
}
The keys required for the ConfigurationBuilder are declared within theun-ejb-jar.xml files on src / main / resources / META-INF:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sun-ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD GlassFish Application Server 3.0 EJB 3.1//EN" "http://www.sun.com/software/appserver/dtds/sun-ejb-jar_3_1-0.dtd">
<sun-ejb-jar>
<enterprise-beans>
<session>
<ejb-name>TwitterSearchBean</ejb-name>
<env-entry>
<env-entry-name>TWITTER_OAUTH_CONSUMER_KEY</env-entry-name>
<env-entry-type>java.lang.String</env-entry-type>
<env-entry-value>please enter key here</env-entry-value>
</env-entry>
<env-entry>
<env-entry-name>TWITTER_OAUTH_CONSUMER_SECRET</env-entry-name>
<env-entry-type>java.lang.String</env-entry-type>
<env-entry-value>please enter key here</env-entry-value>
</env-entry>
<env-entry>
<env-entry-name>TWITTER_OAUTH_ACCESS_TOKEN</env-entry-name>
<env-entry-type>java.lang.String</env-entry-type>
<env-entry-value>please enter key here</env-entry-value>
</env-entry>
<env-entry>
<env-entry-name>TWITTER_OAUTH_ACCESS_TOKEN_SECRET</env-entry-name>
<env-entry-type>java.lang.String</env-entry-type>
<env-entry-value>please enter key here</env-entry-value>
</env-entry>
</session>
</enterprise-beans>
</sun-ejb-jar>
These resources are not injected and the keys are null. Does anyone know what the problem may be or know an alternative?