GVKun编程网logo

带有Spring Cloud和Eureka的功能区:java.lang.IllegalStateException:Samarths-MacBook- Pro.local没有可用实例

11

针对带有SpringCloud和Eureka的功能区:java.lang.IllegalStateException:Samarths-MacBook-Pro.local没有可用实例这个问题,本篇文章

针对带有Spring Cloud和Eureka的功能区:java.lang.IllegalStateException:Samarths-MacBook- Pro.local没有可用实例这个问题,本篇文章进行了详细的解答,同时本文还将给你拓展Android camera2:java.lang.IllegalStateException:已经获得了maxImages(1),在获取更多内容之前调用#close、android – Room:java.lang.IllegalStateException:对于现有数据库,迁移没有正确、AOP拦截日志类,抛异常:java.lang.IllegalStateException: It is illegal to call this method if the current re...、com.google.gson.JsonSyntaxException:java.lang.IllegalStateException:预期BEGIN_ARRAY但是STRING等相关知识,希望可以帮助到你。

本文目录一览:

带有Spring Cloud和Eureka的功能区:java.lang.IllegalStateException:Samarths-MacBook- Pro.local没有可用实例

带有Spring Cloud和Eureka的功能区:java.lang.IllegalStateException:Samarths-MacBook- Pro.local没有可用实例

我正在使用带有Ribbon负载平衡器的Spring Boot Eureka客户端应用程序。

我有两个在Eureka注册的服务器实例,名称为“ TEST”。在客户端,我有以下代码从Eureka获取服务器。

@Configuration@ComponentScan@EnableAutoConfiguration@EnableEurekaClient@RestControllerpublic class EurekaConsumerApplication {    @Autowired    DiscoveryClient discoveryClient;    @Autowired    RestTemplate restTemplate;    @RequestMapping(value = "/",method = RequestMethod.GET)    String consumer(){        InstanceInfo instance = discoveryClient.getNextServerFromEureka("TEST",        false);        URI uri = UriComponentsBuilder.fromUriString(instance.getHomePageUrl() + "baseDir")            .build()            .toUri();        String baseDir = restTemplate.getForObject(uri, String.class);        return baseDir;    }    public static void main(String[] args) {        SpringApplication.run(EurekaConsumerApplication.class, args);    }}

application.yml

spring:  application:    name: consumerinfo:  component: Consumer to fetch configurationserver:  port: 8090eureka:  instance:   leaseRenewalIntervalInSeconds: 3  metadataMap:    instanceId:   ${vcap.application.instance_id:${spring.application.name}:${spring.application.instance_id:${random.value}}}client:# Default values comes from   org.springframework.cloud.netflix.eurek.EurekaClientConfigBean  region: default  registryFetchIntervalSeconds: 5  instanceInfoReplicationIntervalSeconds: 5  initialInstanceInfoReplicationIntervalSeconds: 5  serviceUrl:    defaultZone: http://localhost:8761/eureka/    availabilityZones:    default: ${APPLICATION_DOMAIN:${DOMAIN:defaultZone}}

但是,当我使用以下命令命中宁静的端点时,会出现错误:

curl http://localhost:8090/

这是错误:

{"exception":"java.lang.IllegalStateException","message":"org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.IllegalStateException: No instances available for Samarths-MacBook-Pro.local","path":"/"}

堆栈跟踪:

2015-07-22 14:37:35.005 INFO 13841 --- [tp1334391583-19] c.netflix.loadbalancer.BaseLoadBalancer : Client:Samarths-MacBook-Pro.local instantiated a LoadBalancer:DynamicServerListLoadBalancer:{NFLoadBalancer:name=Samarths-MacBook-Pro.local,current list of Servers=[],Load balancer stats=Zone stats: {},Server stats: []}ServerList:null2015-07-22 14:37:35.009 INFO 13841 --- [tp1334391583-19] c.n.l.DynamicServerListLoadBalancer : DynamicServerListLoadBalancer for client Samarths-MacBook-Pro.local initialized: DynamicServerListLoadBalancer:{NFLoadBalancer:name=Samarths-MacBook-Pro.local,current list of Servers=[],Load balancer stats=Zone stats: {},Server stats: []}ServerList:org.springframework.cloud.netflix.ribbon.eureka.DomainExtractingServerList@681eda372015-07-22 14:37:35.029 WARN 13841 --- [tp1334391583-19] o.eclipse.jetty.servlet.ServletHandler :org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.IllegalStateException: No instances available for Samarths-MacBook-Pro.localat org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:978)at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:857)at javax.servlet.http.HttpServlet.service(HttpServlet.java:687)at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:842)at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:808)at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1669)at org.springframework.boot.actuate.autoconfigure.EndpointWebMvcAutoConfiguration$ApplicationContextHeaderFilter.doFilterInternal(EndpointWebMvcAutoConfiguration.java:295)at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)at org.springframework.boot.actuate.trace.WebRequestTraceFilter.doFilterInternal(WebRequestTraceFilter.java:102)at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:77)at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:85)at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)at org.eclipse.jetty..ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)at org.springframework.boot.actuate.autoconfigure.MetricsFilter.doFilterInternal(MetricsFilter.java:68)at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:585)at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:223)at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127)at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515)at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061)at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)at org.eclipse.jetty.server.Server.handle(Server.java:499)at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:310)at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257)at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:540)at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635)at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555)at java.lang.Thread.run(Thread.java:745)Caused by: java.lang.IllegalStateException: No instances available for Samarths-MacBook-Pro.localat org.springframework.cloud.netflix.ribbon.RibbonClientHttpRequestFactory.createRequest(RibbonClientHttpRequestFactory.java:64)at org.springframework.http.client.support.HttpAccessor.createRequest(HttpAccessor.java:76)at org.springframework.web.client.Rlate.doExecute(RestTemplate.java:565)at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:545)at org.springframework.web.client.RestTemplate.getForObject(RestTemplate.java:253)at com.securityscorecard.eureka.consumer.EurekaConsumerApplication.consumer(EurekaConsumerApplication.java:53)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.lang.reflect.Method.invoke(Method.java:497)at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:221)at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:137)at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110)at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:776)at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:705)at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:959)at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893)at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:966)... 38 common frames omitted

看起来我的服务器列表为空。

答案1

小编典典

RestTemplate您自动连接已经连接到功能区。因此,您需要手动RestTemplate进行查找,然后尝试查找传递给功能区的主机名。您有两种选择:1)不要使用netflix
DiscoveryClient并将serviceId作为逻辑主机名传递到功能区(http://TEST/myservice),2)不要使用自动装配RestTemplate,为您的班级创建一个新的。我的选择是第一。

Android camera2:java.lang.IllegalStateException:已经获得了maxImages(1),在获取更多内容之前调用#close

Android camera2:java.lang.IllegalStateException:已经获得了maxImages(1),在获取更多内容之前调用#close

您好无法解决此问题.

我已经在ImageAvailable回调中调用了imageReader.close,但仍然有错误:

java.lang.IllegalStateException: maxImages (1) has already been acquired,call #close before acquiring more.

我的代码在这里:

private ImageReader.OnImageAvailableListener imageAvailableListener = new ImageReader.OnImageAvailableListener()
{
    @Override
    public void onImageAvailable(ImageReader reader) {
        Image img = mReader.acquireLatestimage();

        mReader.close();
    }

};

PS.我也使用参数阅读器,但似乎没有解决问题

解决方法

好的,我已经解决了我的问题.我需要关闭img对象而不是ImageReader.

android – Room:java.lang.IllegalStateException:对于现有数据库,迁移没有正确

android – Room:java.lang.IllegalStateException:对于现有数据库,迁移没有正确

使用的房间版本: – 1.1.1-rc1

我有一个由ormlite实现的现有数据库.我正在尝试使用ormlite生成的现有sqlite文件迁移到Room.

当我们在ormlite中对table列使用long数据类型时,它会在sqlite中被转换为BIGINT.所以创建的模式包含BIGINT类型的列,它是房间的未知类型.当我尝试使用Room升级应用程序时,我将获得迁移异常.

java.lang.IllegalStateException:迁移没有正确

Process: com.sample.playground, PID: 5587
java.lang.IllegalStateException: Migration didn't properly handle SampleReports(com.sample.playground.model.SampleReport
 Expected:
TableInfo{name='SampleReports', columns={timeslot=Column{name='timeslot', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=0}, environment=Column{name='environment', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0}, timestamp=Column{name='timestamp', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=0}, trigger=Column{name='trigger', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=0}, imeisvSvn=Column{name='imeisvSvn', type='TEXT', affinity='2', notNull=false, primaryKeyPosition=0}, _id=Column{name='_id', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=1}}, foreignKeys=[], indices=[]}
 Found:
TableInfo{name='SampleReports', columns={environment=Column{name='environment', type='TEXT', affinity='2', notNull=true, primaryKeyPosition=0}, timeslot=Column{name='timeslot', type='BIGINT', affinity='3', notNull=true, primaryKeyPosition=0}, trigger=Column{name='trigger', type='INTEGER', affinity='3', notNull=true, primaryKeyPosition=0}, timestamp=Column{name='timestamp', type='BIGINT', affinity='3', notNull=true, primaryKeyPosition=0}, _id=Column{name='_id', type='INTEGER', affinity='3', notNull=false, primaryKeyPosition=1}}, foreignKeys=[], indices=[]}
    at com.sample.playground.model.SampleReport.SampleReportRoomDbHelper_Impl$1.validateMigration(SampleReportRoomDbHelper_Impl.java:77)
    at android.arch.persistence.room.RoomOpenHelper.onUpgrade(RoomOpenHelper.java:87)
    at android.arch.persistence.db.framework.FrameworksqliteOpenHelper$OpenHelper.onUpgrade(FrameworksqliteOpenHelper.java:133)
    at android.database.sqlite.sqliteOpenHelper.getDatabaseLocked(sqliteOpenHelper.java:256)
    at android.database.sqlite.sqliteOpenHelper.getWritableDatabase(sqliteOpenHelper.java:163)
    at android.arch.persistence.db.framework.FrameworksqliteOpenHelper$OpenHelper.getWritableSupportDatabase(FrameworksqliteOpenHelper.java:96)
    at android.arch.persistence.db.framework.FrameworksqliteOpenHelper.getWritableDatabase(FrameworksqliteOpenHelper.java:54)
    at android.arch.persistence.room.RoomDatabase.query(RoomDatabase.java:233)
    at com.sample.playground.model.SampleReportDao_Impl.getReports(SampleReportDao_Impl.java:300)

使用BigInteger尝试使用TypeConverter仍然无法正常工作.

解决方法:

我认为您需要通过重写migrate方法来相应地转换表,以便它
– 根据预期的列创建一个中间表,
– 将数据复制到中间表,
– 放下原来的桌子
– 然后将中间表的名称更改为原始名称

例如:

DROP TABLE IF EXISTS SampleReports_intermediate;
CREATE TABLE IF NOT EXISTS SampleReports_intermediate (
    timeslot INTEGER NOT NULL, 
    environment TEXT NOT NULL,
    timestamp INTEGER NOT NULL,
    `trigger` INTEGER NOT NULL,
    imeisvSvn TEXT,
    _id INTEGER PRIMARY KEY
);
INSERT INTO SampleReports_intermediate (environment, timeslot, `trigger`, timestamp, _id)
    SELECT environment, timeslot,`trigger`, timestamp, _id FROM SampleReports
;
DROP TABLE IF EXISTS SampleReports;
ALTER TABLE SampleReports_intermediate RENAME TO SampleReports;

如果您没有使用1.1室,请尝试使用它,因为:

Room 1.1 added support for sqlite types that were not in Room

Room Database Migration didn’t properly handle conversion

AOP拦截日志类,抛异常:java.lang.IllegalStateException: It is illegal to call this method if the current re...

AOP拦截日志类,抛异常:java.lang.IllegalStateException: It is illegal to call this method if the current re...

 

AOP的日志拦截类中,抛出异常:

java.lang.IllegalStateException: It is illegal to call this method if the current request is not in asynchronous mode

主要原因:对方法的参数使用JSON.toJSONString(args[index])转换时,有异常抛出【如果参数类型是请求和响应的http,使用JSON.toJSONString()转换会抛异常】

解决方案:将不能进行序列化的入参过滤掉,只要留下我们需要记录的入参参数记录到日志中即可

完整代码:

/**
     * 从切点中解析出该切点对应的方法
     * @param point point
     * @throws ClassNotFoundException
     * @throws IOException
     * @author 洪墨水
     */
    private void getRequestParams(ProceedingJoinPoint point,
            RecordMessage recordMessage)
            throws ClassNotFoundException, IOException
    {
        /* 类名 */
        String targetObject = point.getTarget().getClass().getName();
        /* 方法名 */
        String methodName = point.getSignature().getName();

        recordMessage.setTargetObject(targetObject);
        recordMessage.setMethod(methodName);

        Object[] args = point.getArgs();

        Class<?> targetClass = Class.forName(targetObject);

        Method[] methods = targetClass.getMethods();

        StringBuilder requestBuilder = new StringBuilder(0);

        /**
         * 遍历方法 获取能与方法名相同且请求参数个数也相同的方法
         */
        for (Method method : methods)
        {
            if (!method.getName().equals(methodName))
            {
                continue;
            }

            Class<?>[] classes = method.getParameterTypes();

            if (classes.length != args.length)
            {
                continue;
            }

            for (int index = 0; index < classes.length; index++)
            {
                // 如果参数类型是请求和响应的http,则不需要拼接【这两个参数,使用JSON.toJSONString()转换会抛异常】
                if (args[index] instanceof HttpServletRequest
                        || args[index] instanceof HttpServletResponse)
                {
                    continue;
                }
                requestBuilder.append(args[index] == null ? ""
                        : JSON.toJSONString(args[index]));
            }

            recordMessage.setRequestParames(requestBuilder.toString());
        }

        return;
    }

 

com.google.gson.JsonSyntaxException:java.lang.IllegalStateException:预期BEGIN_ARRAY但是STRING

com.google.gson.JsonSyntaxException:java.lang.IllegalStateException:预期BEGIN_ARRAY但是STRING

这是我使用Gson进行序列化的第一种方法.我像这样回复了我的Android应用程序的facebook响应

我的Json:

 {"data": [
    {
        "pic_square": "https://fbcdn-profile-a.akamaihd.netxxxx1388091435_797626998_q.jpg",
        "uid": "10202xxx852765",
        "name": "Mister X"
    },
    {
        "pic_square": "https://fbcdn-profile-a.akamaihd.netxxxx1388091435_797626998_q.jpg",
        "uid": "10202xxx852765",
        "name": "Mister X"
    }
   ]
}



    try {
       final GsonBuilder builder = new GsonBuilder();
       final Gson gson = builder.create();
       JSONObject data= response.getGraphObject().getInnerjsonObject();             
       FacebookResponses facebookResponses= gson.fromJson(data.toString(),FacebookResponses.class); //exception here
       Log.i(TAG, "Result: " + facebookResponses.toString());
    } catch (JsonSyntaxException e) {
        e.printstacktrace();

}
我的课

public class FacebookResponses implements Serializable {
  private static final long serialVersionUID = 1L;
      @Serializedname("data");
      private FacebookRisp[] data;
}

class FacebookRisp implements Serializable {

    private static final long serialVersionUID = 1L;

   @Serializedname("pic_square")
   private String[] pic_square;

   @Serializedname("uid")
   private String[] uid;

   @Serializedname("name")
   private String[] name;

   public String[] getPic_square() {
        return pic_square;
   }

   public void setPic_square(String[] pic_square) {
    this.pic_square = pic_square;
   }

    public String[] getUid() {
    return uid;
   }

   public void setUid(String[] uid) {
    this.uid = uid;
   }

   public String[] getName() {
    return name;
   }

   public void setName(String[] name) {
    this.name = name;
   }

 }

我明白了
com.google.gson.JsonSyntaxException:java.lang.IllegalStateException:预期为BEGIN_ARRAY但在第1行第118列为STRING

更新:
我修改了爱琴海的答案,问题是[]

@Serializedname("pic_square")
private String**[]** pic_square;   //ex here and others

解决方法:

将您的FacebookResponses类更改为:

private class FacebookResponses {
    private Data[] data;
}

private class Data {
    @Serializedname("pic_square")
    private String picSquare;
    private String uid;
    private String name;
}

编辑:因为您的json响应的结构如下所示:

关于带有Spring Cloud和Eureka的功能区:java.lang.IllegalStateException:Samarths-MacBook- Pro.local没有可用实例的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于Android camera2:java.lang.IllegalStateException:已经获得了maxImages(1),在获取更多内容之前调用#close、android – Room:java.lang.IllegalStateException:对于现有数据库,迁移没有正确、AOP拦截日志类,抛异常:java.lang.IllegalStateException: It is illegal to call this method if the current re...、com.google.gson.JsonSyntaxException:java.lang.IllegalStateException:预期BEGIN_ARRAY但是STRING等相关内容,可以在本站寻找。

本文标签: