求助,dubbox,springMvc框架小demo

sinnosuke 2020-07-10 02:46:49
注册中心有服务方,浏览器输入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后台也会爆错),有大神能帮助组我一下么
...全文
340 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
nobody-kill 2020-07-10
  • 打赏
  • 举报
回复
那你再看消费者报错的那个提示的服务方地址与控制台看到的服务方地址一致不
sinnosuke 2020-07-10
  • 打赏
  • 举报
回复
最开始没有消费者,但是运行报错后消费者就看得到了
nobody-kill 2020-07-10
  • 打赏
  • 举报
回复
有消费者吗
sinnosuke 2020-07-10
  • 打赏
  • 举报
回复
就是奇怪了,admin里面可以看到有服务
nobody-kill 2020-07-10
  • 打赏
  • 举报
回复
异常提示的已经很明确,没有可用的服务方,两种可能: 1、服务方的确未注册 2、服务方与消费方的注册中心不一致(从配置文件来看,完全可以排除这种可能) 具体看服务是否注册成功,可以启动一个dubbo-admin看下
sinnosuke 2020-07-10
  • 打赏
  • 举报
回复
因为别人那里能运行的工程放到我这边就直接爆出错误,找不到service
nobody-kill 2020-07-10
  • 打赏
  • 举报
回复
那你设置下jdk,再试试呢,
sinnosuke 2020-07-10
  • 打赏
  • 举报
回复
Build path specifies execution environment JavaSE-1.7. There are no JREs installed in the workspace that are strictly compatible with this environment. dubboxService 有个这个警告,会不会是我环境的问题呢
nobody-kill 2020-07-10
  • 打赏
  • 举报
回复
配置指定注册客户端,需要注意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>
sinnosuke 2020-07-10
  • 打赏
  • 举报
回复
而且我随便乱输入(只要有.action后缀)的url,后台也会爆这个错误
sinnosuke 2020-07-10
  • 打赏
  • 举报
回复
改了,还是不行,会不会是环境有什么影响呢,我用的maven
nobody-kill 2020-07-10
  • 打赏
  • 举报
回复
把你消费方与服务方的协议端口改为不相同的,再重启试试
sinnosuke 2020-07-10
  • 打赏
  • 举报
回复
服务方
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;
}
}

保证两个工程里有相同接口
nobody-kill 2020-07-10
  • 打赏
  • 举报
回复
再检查服务方是否使用dubbo的service注解
nobody-kill 2020-07-10
  • 打赏
  • 举报
回复
服务方与消费方端口冲突了
sinnosuke 2020-07-10
  • 打赏
  • 举报
回复
这是服务方的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="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"/>
sinnosuke 2020-07-10
  • 打赏
  • 举报
回复
这是服务方的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>
sinnosuke 2020-07-10
  • 打赏
  • 举报
回复
这是消费方的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>
nobody-kill 2020-07-10
  • 打赏
  • 举报
回复
如果你是想匹配以.action结尾的url,应该配置<url-pattern>*.action<url-pattern/> dubbo那个异常已经提示No provider available for the service(没有可用的服务提供方),也就是说服务方未注册,检查服务方注册配置
sinnosuke 2020-07-10
  • 打赏
  • 举报
回复
有人在吗,有人么

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧