注冊中心有服務方,瀏覽器輸入springmvc的resultMapping匹配的url后,注冊中心出現消費方,但是會報錯
java.lang.IllegalStateException: Failed to check the status of the service com.mao.demo.Service. No provider available for the service com.mao.demo.Service:1.0.0 from the url zookeeper://192.168.25.128:2181/com.alibaba.dubbo.registry.RegistryService?anyhost=true&application=dubboxWeb&check=false&dubbo=2.8.4&generic=false&interface=com.mao.demo.Service&methods=getName&pid=1892&revision=1.0.0&side=consumer×tamp=1594360866262&version=1.0.0 to the consumer 192.168.74.1 use dubbo version 2.8.4
com.alibaba.dubbo.config.ReferenceConfig.createProxy(ReferenceConfig.java:420)
還有奇怪的是url輸錯了,但是只要隨便寫一個遇url-pattern匹配的url(比如<url-pattern>.action<url-pattern/>,只要隨便輸入一個....action 的url后臺也會爆錯),有大神能幫助組我一下么
uj5u.com熱心網友回復:
有人在嗎,有人么uj5u.com熱心網友回復:
如果你是想匹配以.action結尾的url,應該配置<url-pattern>*.action<url-pattern/>dubbo那個例外已經提示No provider available for the service(沒有可用的服務提供方),也就是說服務方未注冊,檢查服務方注冊配置
uj5u.com熱心網友回復:
這是消費方的web.xml<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>*.action</url-pattern>
</servlet-mapping>
uj5u.com熱心網友回復:
這是服務方的web.xml<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext*.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
uj5u.com熱心網友回復:
這是服務方的applicationContext.xml<dubbo:protocol name="dubbo" port="20880"/>
<dubbo:application name="dubboxService"/>
<dubbo:registry address="zookeeper://192.168.25.128:2181" timeout="100000"/>
<dubbo:annotation package="com.mao.demo.impl"/>
這是消費方的springMvc.xml
<mvc:annotation-driven>
<mvc:message-converters register-defaults="false">
<bean class="org.springframework.http.converter.StringHttpMessageConverter">
<constructor-arg value="https://bbs.csdn.net/topics/utf-8"/>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
<dubbo:protocol name="dubbo" port="20880"/>
<dubbo:application name="dubboxWeb"/>
<dubbo:registry address="zookeeper://192.168.25.128:2181" timeout="100000"/>
<dubbo:annotation package="com.mao.demo.controller"/>
uj5u.com熱心網友回復:

服務方與消費方埠沖突了
uj5u.com熱心網友回復:
再檢查服務方是否使用dubbo的service注解uj5u.com熱心網友回復:
服務方package com.mao.demo.impl;
import com.mao.demo.Service;
@com.alibaba.dubbo.config.annotation.Service(version = "1.0.0")
public class ServiceImpl implements Service {
public String getName() {
// TODO Auto-generated method stub
return "itheima";
}
}
消費方代碼
package com.mao.demo.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.alibaba.dubbo.config.annotation.Reference;
import com.mao.demo.Service;
@Controller
@RequestMapping("/user")
public class UserController {
@Reference(version = "1.0.0")
private Service service;
@RequestMapping("/showName")
@ResponseBody
public String showName() {
String name = service.getName();
return name;
}
}
保證兩個工程里有相同介面
uj5u.com熱心網友回復:
把你消費方與服務方的協議埠改為不相同的,再重啟試試uj5u.com熱心網友回復:
改了,還是不行,會不會是環境有什么影響呢,我用的mavenuj5u.com熱心網友回復:
而且我隨便亂輸入(只要有.action后綴)的url,后臺也會爆這個錯誤uj5u.com熱心網友回復:
配置指定注冊客戶端,需要注意zk的版本和注冊客戶端版本的兼容性參見官方說明:
Dubbo 支持 zkclient 和 curator 兩種 Zookeeper 客戶端實作:
注意:在2.7.x的版本中已經移除了zkclient的實作,如果要使用zkclient客戶端,需要自行拓展
<dubbo:registry ... client="curator" />
或:
dubbo.registry.client=curator
或:
zookeeper://10.20.153.10:2181?client=curator
需依賴或直接下載:
<dependency>
<groupId>com.netflix.curator</groupId>
<artifactId>curator-framework</artifactId>
<version>1.1.10</version>
</dependency>
uj5u.com熱心網友回復:
Build path specifies execution environment JavaSE-1.7. There are no JREs installed in the workspace that are strictly compatible with this environment. dubboxService 有個這個警告,會不會是我環境的問題呢uj5u.com熱心網友回復:
那你設定下jdk,再試試呢,uj5u.com熱心網友回復:
因為別人那里能運行的工程放到我這邊就直接爆出錯誤,找不到serviceuj5u.com熱心網友回復:
例外提示的已經很明確,沒有可用的服務方,兩種可能:1、服務方的確未注冊
2、服務方與消費方的注冊中心不一致(從組態檔來看,完全可以排除這種可能)
具體看服務是否注冊成功,可以啟動一個dubbo-admin看下
uj5u.com熱心網友回復:
就是奇怪了,admin里面可以看到有服務uj5u.com熱心網友回復:
有消費者嗎
uj5u.com熱心網友回復:
最開始沒有消費者,但是運行報錯后消費者就看得到了uj5u.com熱心網友回復:
那你再看消費者報錯的那個提示的服務方地址與控制臺看到的服務方地址一致不轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/39595.html
標籤:Web 開發
上一篇:Jmeter連接資料庫報錯(Response message:java.sql.SQLException: Cannot create PoolableCon)
下一篇:有人對JeMeter比較熟悉嗎?
