目前Solr 4.10 所使用的啟動Server 版本為 Jetty 8.1.10.v20130312,如果啟動Server不同JNDI設定方式也會不一樣。
- 修改start.jar
- 到啟動 jetty 的資料夾,使用解壓縮軟體打開 start.jar 檔
- 將 org/eclipse/jetty/start/start.config 檔案,解壓到桌面
- 用文字編輯器打開start.config檔找到
改成 - 請在default後面加入plus,修改完畢後,將start.config 檔案壓回 start.jar 檔內
- 到啟動 jetty 的資料夾,使用解壓縮軟體打開 start.jar 檔
- 下載JETTY 8.0 資源
- 到eclipse 官網下載 jetty 8.0 所有jar檔 (solr 4.10 使用的jetty8 版本為 8.1.10.v20130312 )
- 解壓縮後到target/site/plugins/ 資料夾將以下的jar拉出來到 solrhome/lib 裡面
- org.eclipse.jetty.jndi_8.1.10.v20130312
- org.eclipse.jetty.plus_8.1.10.v20130312
- 並且修改jar檔的命名,格式跟lib資料夾內其它jar一樣即可,如果命名錯誤,start.config會讀不到。
- 到eclipse 官網下載 jetty 8.0 所有jar檔 (solr 4.10 使用的jetty8 版本為 8.1.10.v20130312 )
- 下載 mysql-connector-java-5.1.27.jar
- 請放到solrhome/lib/ext 資料夾內
- 請放到solrhome/lib/ext 資料夾內
- 編輯 solrhome/contexts/solr-jetty-context.xml 檔案
- 開啟檔案後請在最後面加入JNDI的設定
<?xml version="1.0"?> <!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure.dtd"> <Configure class="org.eclipse.jetty.webapp.WebAppContext"> <Set name="contextPath"><SystemProperty name="hostContext" default="/solr"/></Set> <Set name="war"><SystemProperty name="jetty.home"/>/webapps/solr.war</Set> <Set name="defaultsDescriptor"><SystemProperty name="jetty.home"/>/etc/webdefault.xml</Set> <Set name="tempDirectory"><Property name="jetty.home" default="."/>/solr-webapp</Set> <!-- 下方新增 Jndi resource --> <New id="fusion_db" class="org.eclipse.jetty.plus.jndi.Resource"> <Arg>java:comp/env/jdbc/fusion</Arg> <Arg> <New class="com.mysql.jdbc.jdbc2.optional.MysqlConnectionPoolDataSource"> <Set name="Url">jdbc:mysql://localhost:3306/fusion</Set> <Set name="User">root</Set> <Set name="Password">root</Set> <Set name="tinyInt1isBit">false</Set> </New> </Arg> </New> </Configure>
- 開啟檔案後請在最後面加入JNDI的設定
- 修改 solr core dbconfig設定
- 請到要修改成使用jndi讀取資料庫連結的核心conf資料內開啟db-xxx-config.xml檔案進行編輯
- 原本的dataSource大致上應該是長這樣
<dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/fusion" user="root" password="root" tinyInt1isBit="false"/>
修改成使用jndiName讀取<dataSource type="JdbcDataSource" jndiName="java:comp/env/jdbc/fusion" />
- 請到要修改成使用jndi讀取資料庫連結的核心conf資料內開啟db-xxx-config.xml檔案進行編輯
- 以上修改完成後,請到主控台測試是否正常連結
- 請注意 在solr-jetty-context.xml 及 db-xxx-config.xml 此兩個檔案所存放的JNDI名稱必需一模一樣 否則會出現以下錯誤
Caused by: javax.naming.NameNotFoundException; remaining name 'env/jdbc/fusion' at org.eclipse.jetty.jndi.NamingContext.lookup(NamingContext.java:505) at org.eclipse.jetty.jndi.NamingContext.lookup(NamingContext.java:536) at org.eclipse.jetty.jndi.NamingContext.lookup(NamingContext.java:551) at org.eclipse.jetty.jndi.java.javaRootURLContext.lookup(javaRootURLContext.java:117) at javax.naming.InitialContext.lookup(Unknown Source) at org.apache.solr.handler.dataimport.JdbcDataSource$1.getFromJndi(JdbcDataSource.java:211) at org.apache.solr.handler.dataimport.JdbcDataSource$1.call(JdbcDataSource.java:143) at org.apache.solr.handler.dataimport.JdbcDataSource$1.call(JdbcDataSource.java:133) at org.apache.solr.handler.dataimport.JdbcDataSource.getConnection(JdbcDataSource.java:402) at org.apache.solr.handler.dataimport.JdbcDataSource.access$200(JdbcDataSource.java:44) at org.apache.solr.handler.dataimport.JdbcDataSource$ResultSetIterator.<init>(JdbcDataSource.java:270) ... 12 more
- 如果設定檔設定錯誤或是打錯,基本上應該會出現Xml解析錯誤的錯誤訊息
參考資料
參考資料都無法設定成功,所以看看就好
沒有留言:
張貼留言