分佈式網上商城項目-solr搜索功能錯誤

 

一、RuntimeException錯誤

 

 1 java.lang.RuntimeException: org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): cn.thyonline.taotao.search.mapper.SearchItemMapper.SearchItemList  2 
 3 org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): cn.thyonline.taotao.search.mapper.SearchItemMapper.SearchItemList  4 
 5          at org.apache.ibatis.binding.MapperMethod$SqlCommand.<init>(MapperMethod.java:189)  6 
 7          at org.apache.ibatis.binding.MapperMethod.<init>(MapperMethod.java:43)  8 
 9          at org.apache.ibatis.binding.MapperProxy.cachedMapperMethod(MapperProxy.java:58)  10 
 11          at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:51)  12 
 13  at com.sun.proxy.$Proxy34.SearchItemList(Unknown Source)  14 
 15          at cn.thyonline.taotao.search.service.impl.SearchItemServiceImpl.importAllItems(SearchItemServiceImpl.java:24)  16 
 17          at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)  18 
 19          at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)  20 
 21          at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)  22 
 23          at java.base/java.lang.reflect.Method.invoke(Method.java:564)  24 
 25          at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:302)  26 
 27          at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)  28 
 29          at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)  30 
 31          at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:99)  32 
 33          at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:281)  34 
 35          at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96)  36 
 37          at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)  38 
 39          at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:99)  40 
 41          at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:281)  42 
 43          at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96)  44 
 45          at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)  46 
 47          at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92)  48 
 49          at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)  50 
 51          at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:208)  52 
 53  at com.sun.proxy.$Proxy35.importAllItems(Unknown Source)  54 
 55  at com.alibaba.dubbo.common.bytecode.Wrapper0.invokeMethod(Wrapper0.java)  56 
 57          at com.alibaba.dubbo.rpc.proxy.javassist.JavassistProxyFactory$1.doInvoke(JavassistProxyFactory.java:46)  58 
 59          at com.alibaba.dubbo.rpc.proxy.AbstractProxyInvoker.invoke(AbstractProxyInvoker.java:72)  60 
 61          at com.alibaba.dubbo.rpc.protocol.InvokerWrapper.invoke(InvokerWrapper.java:53)  62 
 63          at com.alibaba.dubbo.rpc.filter.ExceptionFilter.invoke(ExceptionFilter.java:64)  64 
 65          at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:91)  66 
 67          at com.alibaba.dubbo.monitor.support.MonitorFilter.invoke(MonitorFilter.java:75)  68 
 69          at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:91)  70 
 71          at com.alibaba.dubbo.rpc.filter.TimeoutFilter.invoke(TimeoutFilter.java:42)  72 
 73          at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:91)  74 
 75          at com.alibaba.dubbo.rpc.protocol.dubbo.filter.TraceFilter.invoke(TraceFilter.java:78)  76 
 77          at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:91)  78 
 79          at com.alibaba.dubbo.rpc.filter.ContextFilter.invoke(ContextFilter.java:60)  80 
 81          at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:91)  82 
 83          at com.alibaba.dubbo.rpc.filter.GenericFilter.invoke(GenericFilter.java:112)  84 
 85          at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:91)  86 
 87          at com.alibaba.dubbo.rpc.filter.ClassLoaderFilter.invoke(ClassLoaderFilter.java:38)  88 
 89          at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:91)  90 
 91          at com.alibaba.dubbo.rpc.filter.EchoFilter.invoke(EchoFilter.java:38)  92 
 93          at com.alibaba.dubbo.rpc.protocol.ProtocolFilterWrapper$1.invoke(ProtocolFilterWrapper.java:91)  94 
 95          at com.alibaba.dubbo.rpc.protocol.dubbo.DubboProtocol$1.reply(DubboProtocol.java:108)  96 
 97          at com.alibaba.dubbo.remoting.exchange.support.header.HeaderExchangeHandler.handleRequest(HeaderExchangeHandler.java:84)  98 
 99          at com.alibaba.dubbo.remoting.exchange.support.header.HeaderExchangeHandler.received(HeaderExchangeHandler.java:170) 100 
101          at com.alibaba.dubbo.remoting.transport.DecodeHandler.received(DecodeHandler.java:52) 102 
103          at com.alibaba.dubbo.remoting.transport.dispatcher.ChannelEventRunnable.run(ChannelEventRunnable.java:82) 104 
105          at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1135) 106 
107          at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) 108 
109          at java.base/java.lang.Thread.run(Thread.java:844)

 

可是查看target文件發現查看報錯信息能夠看見是mapper綁定無效java

 

Mapper文件已經放置在一個文件夾,再檢查兩個文件發現是select語句的ID沒有對應上web

 

二、請求超時錯誤

 

1 com.alibaba.dubbo.rpc.RpcException: Failed to invoke the method importAllItems in the service cn.thyonline.taotao.search.service.SearchItemService. Tried 3 times of the providers [192.168.199.139:20882] (1/1) from the registry 192.168.25.128:2181 on the consumer 192.168.199.139 using the dubbo version 2.5.3. Last error is: Invoke remote method timeout. method: importAllItems, provider: dubbo://192.168.199.139:20882/cn.thyonline.taotao.search.service.SearchItemService?anyhost=true&application=taotao-manager-web&check=false&dubbo=2.5.3&interface=cn.thyonline.taotao.search.service.SearchItemService&methods=importAllItems&pid=3208&revision=0.0.1-SNAPSHOT&side=consumer&timestamp=1528390391677, cause: Waiting server-side response timeout. start time: 2018-06-08 00:53:16.967, end time: 2018-06-08 00:53:17.968, client elapsed: 0 ms, server elapsed: 1001 ms, timeout: 1000 ms, request: Request [id=2, version=2.0.0, twoway=true, event=false, broken=false, data=RpcInvocation [methodName=importAllItems, parameterTypes=[], arguments=[], attachments={path=cn.thyonline.taotao.search.service.SearchItemService, interface=cn.thyonline.taotao.search.service.SearchItemService, version=0.0.0}]], channel: /192.168.199.139:11038 -> /192.168.199.139:20882

 

 Web層請求超時spring

可是檢查search層在查詢數據庫先後打印數據庫

1 System.out.println("開始查詢商品!"); 2 
3 List<SearchItem> items = mapper.searchItemList(); 4 
5 //二、建立solrServer對象,將商品信息經過SolrInputDocument存入
6 
7 System.out.println("查詢到的商品數量:"+items.size());

而且打印出來了數聽說明mapper映射文件也沒有問題。從新開始測試,發現後臺兩條數據都打印了出來,證實請求從controller層傳遞到了service層,dubbo鏈接沒有問題。apache

那證實一件事情就是此次鏈接由於要鏈接solr致使耗時很長,使得超出了dubbo的默認鏈接時間從而失敗,修改dubbo在service層和controller層的配置app

 1 <!-- 名字不可以重複,和隨便,用於計算依賴關係,服務調用的狀況 -->
 2 
 3     <dubbo:application name="taotao-search" />
 4 
 5     <!-- 使用zookeeper註冊協議  -->
 6 
 7     <dubbo:registry protocol="zookeeper" address="192.168.25.128:2181" />
 8 
 9     <!-- 使用dubbo協議,暴露服務的端口 -->
10 
11     <dubbo:protocol name="dubbo" port="20882" />
12 
13     <!-- 發佈服務 -->
14 
15     <dubbo:service interface="cn.thyonline.taotao.search.service.SearchItemService" ref="searchItemServiceImpl"  timeout="300000"/>

查看solr數據修改鏈接超時爲5分鐘,再次測試,鏈接成功ide

 

 

Solr數據導入成功測試

相關文章
相關標籤/搜索