lifes opened a new issue #9647:
URL: https://github.com/apache/dubbo/issues/9647
env
dubbo3.0.5
1. 接口定义
```
public interface Service2 {
String sayHello(String name);
String sayHello(ClientInfo clientInfo, String name);
default CompletableFuture<String> sayHelloAsync(String name){
return CompletableFuture.completedFuture(sayHello(name));
}
default CompletableFuture<String> sayHelloAsync(ClientInfo clientInfo,
String name){
return CompletableFuture.completedFuture(sayHello(clientInfo, name));
}
}
```
2.
```
@Configuration
public class DubboConsumerConfiguration {
@Bean
@DubboReference(
check = false,
methods = {
// 如果删除这一行,则不报错
//仅仅配置@Method(name = "sayHelloAsync"),报错
//换成xml配置不报错
//@DubboReference直接在filed上注入不报错
@Method(name = "sayHelloAsync", onreturn =
"service2_sayHelloAsync.onreturn")
}
)
public ReferenceBean<Service2> service2() {
return new ReferenceBean<>();
}
}
```
3. 回调接口
```
public interface Notify {
void onreturn(String ret, String req);
void onthrow(Throwable ex, String req);
}
```
```
@Component("service2_sayHelloAsync")
public class NotifyImpl implements Notify{
@Override
public void onreturn(String ret, String name) {
System.out.println("callback调用");
var clientAtt =
RpcContext.getClientAttachment().getObjectAttachments();
var serverAtt =
RpcContext.getServerAttachment().getObjectAttachments();
var serverCtx = RpcContext.getServerContext();
var serviceCtx = RpcContext.getServiceContext();
System.out.println("clientAtt" + JSON.toJSONString(clientAtt));
System.out.println("serverAtt" + JSON.toJSONString(serverAtt));
System.out.println("serverCtx" +
JSON.toJSONString(serverCtx.getObjectAttachments()));
System.out.println("serviceCtx" +
JSON.toJSONString(serviceCtx.getObjectAttachments()));
System.out.println("callback调用2");
}
@Override
public void onthrow(Throwable ex, String name) {
}
}
```
报错
> Caused by: org.springframework.beans.factory.BeanCreationException: Error
creating bean with name 'service2' defined in class path resource
[org/chm/dubboexample/application1/DubboConsumerConfiguration.class]:
Invocation of init method failed; nested exception is
java.lang.NullPointerException
> at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1708)
> at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:581)
> at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:503)
> at
org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:317)
> at
org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
> at
org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:315)
> at
org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
> at
org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:251)
> at
org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1138)
> at
org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1065)
> at
org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:584)
> ... 19 more
> Caused by: java.lang.NullPointerException
> at
org.apache.dubbo.config.spring.reference.ReferenceBeanSupport.convertToString(ReferenceBeanSupport.java:174)
> at
org.apache.dubbo.config.spring.reference.ReferenceBeanSupport.convertToString(ReferenceBeanSupport.java:186)
> at
org.apache.dubbo.config.spring.reference.ReferenceBeanSupport.convertToString(ReferenceBeanSupport.java:178)
> at
org.apache.dubbo.config.spring.reference.ReferenceBeanSupport.generateReferenceKey(ReferenceBeanSupport.java:129)
> at
org.apache.dubbo.config.spring.reference.ReferenceBeanSupport.generateReferenceKey(ReferenceBeanSupport.java:243)
> at
org.apache.dubbo.config.spring.reference.ReferenceBeanManager.addReference(ReferenceBeanManager.java:70)
> at
org.apache.dubbo.config.spring.ReferenceBean.afterPropertiesSet(ReferenceBean.java:242)
> at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1767)
> at
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1704)
> ... 29 more
> 2022-02-02 00:28:14.033 WARN 11163 --- [ Thread-5]
c.a.nacos.common.notify.NotifyCenter : [NotifyCenter] Start destroying
Publisher
> 2022-02-02 00:28:14.033 WARN 11163 --- [ Thread-5]
c.a.nacos.common.notify.NotifyCenter : [NotifyCenter] Destruction of the end
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]