paxxie2 opened a new issue, #15357:
URL: https://github.com/apache/dubbo/issues/15357

   ### Pre-check
   
   - [x] I am sure that all the content I provide is in English.
   
   
   ### Search before asking
   
   - [x] I had searched in the 
[issues](https://github.com/apache/dubbo/issues?q=is%3Aissue) and found no 
similar issues.
   
   
   ### Apache Dubbo Component
   
   Java SDK (apache/dubbo)
   
   ### Dubbo Version
   
   Dubbo java 3.3.1 , jdk 17, mac os 15.3.2
   
   ### Steps to reproduce this issue
   
   1. use dubbo-samples , 
https://github.com/apache/dubbo-samples/tree/master/2-advanced/dubbo-samples-generic/dubbo-samples-generic-call
 
   2. add proto file 
   ```
   syntax = "proto3";
   
   option java_multiple_files = true;
   
   package org.apache.dubbo.samples.tri.grpc;
   
   message GreeterRequest {
     string name = 1;
   }
   
   message GreeterReply {
     string message = 1;
   }
   
   service Greeter{
   
     rpc Greet(GreeterRequest) returns (GreeterReply);
   
   }
   ```
   3. Provider implement interface
   ```
   public class GreeterImpl extends DubboGreeterTriple.GreeterImplBase{
   
       @Override
       public GreeterReply greet(GreeterRequest request) {
           System.out.println("接收来自客户端消息:" + request.getName());
           GreeterReply pax = 
GreeterReply.newBuilder().setMessage("pax").build();
           return pax;
       }
   
       public CompletableFuture<GreeterReply> greetAsync(GreeterRequest 
request) {
           System.out.println("接收来自客户端消息 async:" + request.getName());
           GreeterReply pax = 
GreeterReply.newBuilder().setMessage("pax").build();
           return CompletableFuture.completedFuture(pax);
       }
   
   }
   
   ```
   5. Inject beans into the provider. Update 
dubbo-samples-generic-call-provider resources/spring/generic-provider.xml
   ```
     <bean id="greeterimpl" 
class="org.apache.dubbo.samples.generic.call.impl.GreeterImpl"/>
     <dubbo:service interface="org.apache.dubbo.samples.tri.grpc.Greeter" 
ref="greeterimpl"/>
   ```
   6. Update consumer. Update dubbo-samples-generic-call-consumer 
GenericCallConsumer
   ```
    public static void main(String[] args) throws Exception {
           ApplicationConfig applicationConfig = new ApplicationConfig();
           applicationConfig.setName("generic-call-consumer");
           RegistryConfig registryConfig = new RegistryConfig();
           registryConfig.setAddress("zookeeper://127.0.0.1:2181");
           ReferenceConfig<GenericService> referenceConfig = new 
ReferenceConfig<>();
           referenceConfig.setInterface(GenericService.class.getName());
           //测试普通接口
           
referenceConfig.setInterface("org.apache.dubbo.samples.generic.call.api.HelloService");
   // 低版本       
referenceConfig.setInterface("org.apache.dubbo.samples.tri.grpc.GreeterDubbo$IGreeter");
           //高版本 测试proto
           
referenceConfig.setInterface("org.apache.dubbo.samples.tri.grpc.Greeter");
           applicationConfig.setRegistry(registryConfig);
           referenceConfig.setApplication(applicationConfig);
           referenceConfig.setGeneric(Constants.GENERIC_SERIALIZATION_PROTOBUF);
           //TODO 为什么要显示设置为 false
           referenceConfig.setAsync(false);
           referenceConfig.setTimeout(7000);
   
           genericService = referenceConfig.get();
           invokeGreet(); //测试 proto
       }
       public static void invokeGreet() throws InterruptedException {
           Map<String, Object> greeterRequest = new HashMap<>();
           greeterRequest.put("name", "pax");
           String requestString = new Gson().toJson(greeterRequest);
           Object result = genericService.$invoke("Greet",
                   new 
String[]{"org.apache.dubbo.samples.tri.grpc.GreeterRequest"},
                   new Object[]{requestString});
           System.err.println("invokeSayHello(return): " + result);
       }
   ```
   7. run provider and consumer, then throws exception
   ```
   Exception in thread "main" org.apache.dubbo.rpc.RpcException: Failed to 
invoke the method Greet in the service 
org.apache.dubbo.rpc.service.GenericService. Tried 3 times of the providers 
[10.8.0.2:20880] (1/1) from the registry 127.0.0.1:2181 on the consumer 
192.168.31.47 using the dubbo version 3.3.4-SNAPSHOT. Last error is: Failed to 
invoke remote method: $invoke, provider: 
dubbo://10.8.0.2:20880/org.apache.dubbo.samples.tri.grpc.Greeter?application=generic-provider&async=false&background=false&category=providers,configurators,routers&check=false&deprecated=false&dubbo=2.0.2&dynamic=true&executor-management-mode=isolation&file-cache=true&generic=false&interface=org.apache.dubbo.samples.tri.grpc.Greeter&methods=biStream,greet,greetAsync,serverStream&pid=7977&prefer.serialization=hessian2,fastjson2&proxy=nativestub&release=3.3.4-SNAPSHOT&service-name-mapping=true&side=provider&sticky=false&timeout=7000&token=e95e27e1-d8ba-46c7-b8bd-934317753155&unloadClusterRelated=false,
 cause: o
 rg.apache.dubbo.remoting.RemotingException: java.lang.NullPointerException: 
Cannot invoke "java.lang.reflect.Method.getParameterTypes()" because "method" 
is null
   java.lang.NullPointerException: Cannot invoke 
"java.lang.reflect.Method.getParameterTypes()" because "method" is null
        at 
org.apache.dubbo.rpc.filter.GenericFilter.invoke(GenericFilter.java:97)
        at 
org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$CopyOfFilterChainNode.invoke(FilterChainBuilder.java:349)
        at 
org.apache.dubbo.rpc.protocol.tri.h12.HttpContextFilter.invoke(HttpContextFilter.java:38)
        at 
org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$CopyOfFilterChainNode.invoke(FilterChainBuilder.java:349)
        at 
org.apache.dubbo.rpc.filter.ClassLoaderFilter.invoke(ClassLoaderFilter.java:54)
        at 
org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$CopyOfFilterChainNode.invoke(FilterChainBuilder.java:349)
        at org.apache.dubbo.rpc.filter.EchoFilter.invoke(EchoFilter.java:41)
        at 
org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$CopyOfFilterChainNode.invoke(FilterChainBuilder.java:349)
        at 
org.apache.dubbo.metrics.filter.MetricsFilter.invoke(MetricsFilter.java:86)
        at 
org.apache.dubbo.metrics.filter.MetricsProviderFilter.invoke(MetricsProviderFilter.java:37)
        at 
org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$CopyOfFilterChainNode.invoke(FilterChainBuilder.java:349)
        at 
org.apache.dubbo.rpc.filter.ProfilerServerFilter.invoke(ProfilerServerFilter.java:66)
        at 
org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$CopyOfFilterChainNode.invoke(FilterChainBuilder.java:349)
        at 
org.apache.dubbo.rpc.filter.ContextFilter.invoke(ContextFilter.java:191)
        at 
org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$CopyOfFilterChainNode.invoke(FilterChainBuilder.java:349)
        at 
org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$CallbackRegistrationInvoker.invoke(FilterChainBuilder.java:197)
        at 
org.apache.dubbo.rpc.protocol.dubbo.DubboProtocol$1.reply(DubboProtocol.java:167)
        at 
org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeHandler.handleRequest(HeaderExchangeHandler.java:110)
        at 
org.apache.dubbo.remoting.exchange.support.header.HeaderExchangeHandler.received(HeaderExchangeHandler.java:205)
        at 
org.apache.dubbo.remoting.transport.DecodeHandler.received(DecodeHandler.java:52)
        at 
org.apache.dubbo.remoting.transport.dispatcher.ChannelEventRunnable.run(ChannelEventRunnable.java:64)
        at 
java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
        at 
java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
        at 
org.apache.dubbo.common.threadlocal.InternalRunnable.run(InternalRunnable.java:39)
        at java.base/java.lang.Thread.run(Thread.java:840)
   
        at 
org.apache.dubbo.rpc.cluster.support.FailoverClusterInvoker.doInvoke(FailoverClusterInvoker.java:126)
        at 
org.apache.dubbo.rpc.cluster.support.AbstractClusterInvoker.invoke(AbstractClusterInvoker.java:366)
        at 
org.apache.dubbo.rpc.cluster.router.RouterSnapshotFilter.invoke(RouterSnapshotFilter.java:46)
        at 
org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$CopyOfFilterChainNode.invoke(FilterChainBuilder.java:349)
        at 
org.apache.dubbo.monitor.support.MonitorFilter.invoke(MonitorFilter.java:109)
        at 
org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$CopyOfFilterChainNode.invoke(FilterChainBuilder.java:349)
        at 
org.apache.dubbo.rpc.cluster.filter.support.MetricsClusterFilter.invoke(MetricsClusterFilter.java:57)
        at 
org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$CopyOfFilterChainNode.invoke(FilterChainBuilder.java:349)
        at 
org.apache.dubbo.rpc.protocol.dubbo.filter.FutureFilter.invoke(FutureFilter.java:53)
        at 
org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$CopyOfFilterChainNode.invoke(FilterChainBuilder.java:349)
        at 
org.apache.dubbo.spring.security.filter.ContextHolderParametersSelectedTransferFilter.invoke(ContextHolderParametersSelectedTransferFilter.java:40)
        at 
org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$CopyOfFilterChainNode.invoke(FilterChainBuilder.java:349)
        at 
org.apache.dubbo.metrics.filter.MetricsFilter.invoke(MetricsFilter.java:86)
        at 
org.apache.dubbo.rpc.cluster.filter.support.MetricsConsumerFilter.invoke(MetricsConsumerFilter.java:38)
        at 
org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$CopyOfFilterChainNode.invoke(FilterChainBuilder.java:349)
        at 
org.apache.dubbo.rpc.cluster.filter.support.ConsumerClassLoaderFilter.invoke(ConsumerClassLoaderFilter.java:40)
        at 
org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$CopyOfFilterChainNode.invoke(FilterChainBuilder.java:349)
        at 
org.apache.dubbo.rpc.cluster.filter.support.ConsumerContextFilter.invoke(ConsumerContextFilter.java:119)
        at 
org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$CopyOfFilterChainNode.invoke(FilterChainBuilder.java:349)
        at 
org.apache.dubbo.rpc.cluster.filter.FilterChainBuilder$CallbackRegistrationInvoker.invoke(FilterChainBuilder.java:197)
        at 
org.apache.dubbo.rpc.cluster.support.wrapper.AbstractCluster$ClusterFilterInvoker.invoke(AbstractCluster.java:101)
        at 
org.apache.dubbo.rpc.cluster.support.wrapper.MockClusterInvoker.invoke(MockClusterInvoker.java:107)
        at 
org.apache.dubbo.rpc.cluster.support.wrapper.ScopeClusterInvoker.invoke(ScopeClusterInvoker.java:171)
        at 
org.apache.dubbo.registry.client.migration.MigrationInvoker.invoke(MigrationInvoker.java:294)
        at 
org.apache.dubbo.rpc.proxy.InvocationUtil.invoke(InvocationUtil.java:64)
        at 
org.apache.dubbo.rpc.proxy.InvokerInvocationHandler.invoke(InvokerInvocationHandler.java:81)
        at 
org.apache.dubbo.samples.tri.grpc.GreeterDubboProxy0.$invoke(GreeterDubboProxy0.java)
        at 
org.apache.dubbo.samples.generic.call.GenericCallConsumer.invokeGreet(GenericCallConsumer.java:78)
        at 
org.apache.dubbo.samples.generic.call.GenericCallConsumer.main(GenericCallConsumer.java:65)
   Caused by: java.util.concurrent.ExecutionException: 
org.apache.dubbo.remoting.RemotingException: java.lang.NullPointerException: 
Cannot invoke "java.lang.reflect.Method.getParameterTypes()" because "method" 
is null
   ```
   
   ### What you expected to happen
   
   No exceptions and return results
   
   ### Anything else
   
   _No response_
   
   ### Are you willing to submit a pull request to fix on your own?
   
   - [x] Yes I am willing to submit a pull request on my own!
   
   ### Code of Conduct
   
   - [x] I agree to follow this project's [Code of 
Conduct](https://www.apache.org/foundation/policies/conduct)
   


-- 
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]

Reply via email to