I think it's not about PlusAnonymousUserDataModel,when I run it as application,works well,when run the servlet on tomcat,the error happens.
On Fri, Sep 24, 2010 at 11:49 PM, Sam Yang <[email protected]> wrote: > I got "java.sql.SQLException: No database selected", but my database > config is right,who know what's wrong? > > This is part of my source code: > ===== > > public class AnonymousRecommender implements Recommender{ > > private final Recommender recommender; > > private final PlusAnonymousUserDataModel plusAnonymousModel; > > public AnonymousRecommender() throws TasteException, IOException { > > this(new PreferenceDataModel()); > > } > > > public AnonymousRecommender(PreferenceDataModel dataModel) > > throws TasteException { > > ItemSimilarity itemSimilarity = new ItemSimilarityImpl(); > > recommender = new > GenericItemBasedRecommender(newPlusAnonymousUserDataModel(dataModel), > itemSimilarity); > > plusAnonymousModel = (PlusAnonymousUserDataModel)recommender > .getDataModel(); > > } > > public synchronized List<RecommendedItem> recommend(PreferenceArray > anonymousUserPrefs, int howMany) throws TasteException { > > plusAnonymousModel.setTempPrefs(anonymousUserPrefs); > > List<RecommendedItem> recommendations = > > recommend(PlusAnonymousUserDataModel.TEMP_USER_ID, howMany, null); > > return recommendations; > > } > > public List<RecommendedItem> recommend(String viewIDs, int howMany) > throws TasteException { > > viewIDs = viewIDs.replace("[", "").replace("]", ""); > > String[] viewIDsArray = viewIDs.split(","); > > System.out.println(viewIDsArray.getClass()); > > PreferenceArray anonymousPrefs = newGenericUserPreferenceArray(viewIDsArray. > length); > > for (int i=0;i<viewIDsArray.length;i++){ > > anonymousPrefs.setUserID(i,PlusAnonymousUserDataModel.TEMP_USER_ID); > > anonymousPrefs.setItemID(i, Integer.parseInt(viewIDsArray[i])); > > anonymousPrefs.setValue(i, 3.0f); > > } > > return recommend(anonymousPrefs, howMany); > > } > ===== > > I got this exception: > > ===== > > javax.servlet.ServletException: > org.apache.mahout.cf.taste.common.TasteException: java.sql.SQLException: No > database selected > > net.gamestreamer.recommendation.servlet.AnonymousRecommenderServlet.doGet(AnonymousRecommenderServlet.java:108) > javax.servlet.http.HttpServlet.service(HttpServlet.java:621) > javax.servlet.http.HttpServlet.service(HttpServlet.java:722) > > *root cause* > > org.apache.mahout.cf.taste.common.TasteException: java.sql.SQLException: No > database selected > > org.apache.mahout.cf.taste.impl.model.jdbc.AbstractJDBCDataModel.doGetPreferencesForItem(AbstractJDBCDataModel.java:466) > > org.apache.mahout.cf.taste.impl.model.jdbc.AbstractJDBCDataModel.getPreferencesForItem(AbstractJDBCDataModel.java:440) > > org.apache.mahout.cf.taste.impl.model.PlusAnonymousUserDataModel.getPreferencesForItem(PlusAnonymousUserDataModel.java:124) > > org.apache.mahout.cf.taste.impl.recommender.AbstractRecommender.getAllOtherItems(AbstractRecommender.java:107) > > org.apache.mahout.cf.taste.impl.recommender.GenericItemBasedRecommender.recommend(GenericItemBasedRecommender.java:98) > > net.gamestreamer.recommendation.AnonymousRecommender.recommend(AnonymousRecommender.java:67) > > net.gamestreamer.recommendation.AnonymousRecommender.recommend(AnonymousRecommender.java:39) > > net.gamestreamer.recommendation.AnonymousRecommender.recommend(AnonymousRecommender.java:53) > > net.gamestreamer.recommendation.servlet.AnonymousRecommenderServlet.doGet(AnonymousRecommenderServlet.java:97) > javax.servlet.http.HttpServlet.service(HttpServlet.java:621) > javax.servlet.http.HttpServlet.service(HttpServlet.java:722) > > *root cause* > > java.sql.SQLException: No database selected > com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1075) > com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3562) > com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3494) > com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1960) > com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2114) > com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2696) > > com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2105) > > com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:2264) > > org.apache.mahout.cf.taste.impl.model.jdbc.AbstractJDBCDataModel.doGetPreferencesForItem(AbstractJDBCDataModel.java:458) > > org.apache.mahout.cf.taste.impl.model.jdbc.AbstractJDBCDataModel.getPreferencesForItem(AbstractJDBCDataModel.java:440) > > org.apache.mahout.cf.taste.impl.model.PlusAnonymousUserDataModel.getPreferencesForItem(PlusAnonymousUserDataModel.java:124) > > org.apache.mahout.cf.taste.impl.recommender.AbstractRecommender.getAllOtherItems(AbstractRecommender.java:107) > > org.apache.mahout.cf.taste.impl.recommender.GenericItemBasedRecommender.recommend(GenericItemBasedRecommender.java:98) > > net.gamestreamer.recommendation.AnonymousRecommender.recommend(AnonymousRecommender.java:67) > > net.gamestreamer.recommendation.AnonymousRecommender.recommend(AnonymousRecommender.java:39) > > net.gamestreamer.recommendation.AnonymousRecommender.recommend(AnonymousRecommender.java:53) > > net.gamestreamer.recommendation.servlet.AnonymousRecommenderServlet.doGet(AnonymousRecommenderServlet.java:97) > javax.servlet.http.HttpServlet.service(HttpServlet.java:621) > javax.servlet.http.HttpServlet.service(HttpServlet.java:722) > > ===== > > > -- > I'm samsam. > -- I'm samsam.
