All Posts

Hi, Thank you for catching this bug. I managed to reproduce the issue. It is not a constant bug so it was interesting task to find out the problem. Before I give the explanation what goes wrong, ju... See more...
Hi, Thank you for catching this bug. I managed to reproduce the issue. It is not a constant bug so it was interesting task to find out the problem. Before I give the explanation what goes wrong, just wanted to say that the WS should go through the proxied url as well. Problem: What is the current workflow: 1) A request is sent to the java code to generate a secure token. (ref: messaging-service.ts, WebSocketSessionTicketService) 2) Then the UI uses this token when creating WS (ref: messaging-service.ts) 3) The java code checks if this is the token that was previously generated. (ref WebSocketSessionTicketService::validateTicket) The problem is at step 2 where the token sent from the UI is not encoded and the app tries to encode it (for example changing + to a space character which breaks the workflow). This can be solved by encoding the token before passing it to the WebSocket. The solution should be done in the messaging-service.ts by encoding the sessionTicket before sending it to the backend with the WS. Since the WebSocket JS API does not allow header modification, this might be the only way to fix this from the JS side. Possible solution is to do the needed encoding transformations during ticket generation but requires much more coding. Example fix: const anchorElement = document.createElement('a'); anchorElement.href = 'messaging' + `?session-ticket=${encodeURIComponent(sessionTicket)}`; // HERE IS THE FIX const messagingUrl = `wss://${anchorElement.host}${anchorElement.pathname}${anchorElement.search}`;   Try out this fix to verify if it fixes the issue that you are observing. Thanks, Martin
Hello, I’m having similar issue when using vim25.jar 8.0 with Springboot 3.5.1. To use vim25.jar I must include jakarta.xml.ws: jakarta.xml.ws-api 2.3.3 or older due to dependency to javax.xml.ws.B... See more...
Hello, I’m having similar issue when using vim25.jar 8.0 with Springboot 3.5.1. To use vim25.jar I must include jakarta.xml.ws: jakarta.xml.ws-api 2.3.3 or older due to dependency to javax.xml.ws.BindingProvider. Additionally, com.sun.xml.ws: jaxws-rt 2.3.7 or older must be included due to missing com.sun.xml.internal.ws.spi.ProviderImpl. This provide is missing in dependencies delivered with latest Spring versions.  Playing with dependency order in pom.xml I can get it working springboot/springweb but adding springdoc-openapi-starter-webmvc-ui causes the spring to fail during access to OpenAPI:   Java.lang.ClassNotFoundException: jakarta.xml.bind.annotation.XmlRootElement at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641) ~[na:na] at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188) ~[na:na] at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525) ~[na:na] at io.swagger.v3.core.jackson.ModelResolver.resolveXml(ModelResolver.java:2251) ~[swagger-core-jakarta-2.2.15.jar:2.2.15] at io.swagger.v3.core.jackson.ModelResolver.resolve(ModelResolver.java:356) ~[swagger-core-jakarta-2.2.15.jar:2.2.15] at org.springdoc.core.converters.AdditionalModelsConverter.resolve(AdditionalModelsConverter.java:155) ~[springdoc-openapi-starter-common-2.2.0.jar:2.2.0] at org.springdoc.core.converters.FileSupportConverter.resolve(FileSupportConverter.java:69) ~[springdoc-openapi-starter-common-2.2.0.jar:2.2.0] at org.springdoc.core.converters.ResponseSupportConverter.resolve(ResponseSupportConverter.java:79) ~[springdoc-openapi-starter-common-2.2.0.jar:2.2.0] at org.springdoc.core.converters.SchemaPropertyDeprecatingConverter.resolve(SchemaPropertyDeprecatingConverter.java:92) ~[springdoc-openapi-starter-common-2.2.0.jar:2.2.0] at org.springdoc.core.converters.PolymorphicModelConverter.resolve(PolymorphicModelConverter.java:77) ~[springdoc-openapi-starter-common-2.2.0.jar:2.2.0] at io.swagger.v3.core.converter.ModelConverterContextImpl.resolve(ModelConverterContextImpl.java:97) ~[swagger-core-jakarta-2.2.15.jar:2.2.15] at io.swagger.v3.core.converter.ModelConverters.resolveAsResolvedSchema(ModelConverters.java:153) ~[swagger-core-jakarta-2.2.15.jar:2.2.15] at org.springdoc.core.utils.SpringDocAnnotationsUtils.extractSchema(SpringDocAnnotationsUtils.java:122) ~[springdoc-openapi-starter-common-2.2.0.jar:2.2.0] at org.springdoc.core.service.GenericResponseService.calculateSchema(GenericResponseService.java:561) ~[springdoc-openapi-starter-common-2.2.0.jar:2.2.0] at org.springdoc.core.service.GenericResponseService.buildContent(GenericResponseService.java:520) ~[springdoc-openapi-starter-common-2.2.0.jar:2.2.0] at org.springdoc.core.service.GenericResponseService.buildContent(GenericResponseService.java:501) ~[springdoc-openapi-starter-common-2.2.0.jar:2.2.0] at org.springdoc.core.service.GenericResponseService.buildApiResponses(GenericResponseService.java:593) ~[springdoc-openapi-starter-common-2.2.0.jar:2.2.0] at org.springdoc.core.service.GenericResponseService.buildApiResponses(GenericResponseService.java:455) ~[springdoc-openapi-starter-common-2.2.0.jar:2.2.0] at org.springdoc.core.service.GenericResponseService.build(GenericResponseService.java:257) ~[springdoc-openapi-starter-common-2.2.0.jar:2.2.0] at org.springdoc.api.AbstractOpenApiResource.calculatePath(AbstractOpenApiResource.java:496) ~[springdoc-openapi-starter-common-2.2.0.jar:2.2.0] at org.springdoc.api.AbstractOpenApiResource.calculatePath(AbstractOpenApiResource.java:673) ~[springdoc-openapi-starter-common-2.2.0.jar:2.2.0] at org.springdoc.webmvc.api.OpenApiResource.lambda$calculatePath$11(OpenApiResource.java:219) ~[springdoc-openapi-starter-webmvc-api-2.2.0.jar:2.2.0] at java.base/java.util.Optional.ifPresent(Optional.java:178) ~[na:na] at org.springdoc.webmvc.api.OpenApiResource.calculatePath(OpenApiResource.java:200) ~[springdoc-openapi-starter-webmvc-api-2.2.0.jar:2.2.0] at org.springdoc.webmvc.api.OpenApiResource.lambda$getPaths$2(OpenApiResource.java:170) ~[springdoc-openapi-starter-webmvc-api-2.2.0.jar:2.2.0] at java.base/java.util.Optional.ifPresent(Optional.java:178) ~[na:na] at org.springdoc.webmvc.api.OpenApiResource.getPaths(OpenApiResource.java:149) ~[springdoc-openapi-starter-webmvc-api-2.2.0.jar:2.2.0] at org.springdoc.api.AbstractOpenApiResource.getOpenApi(AbstractOpenApiResource.java:350) ~[springdoc-openapi-starter-common-2.2.0.jar:2.2.0] at org.springdoc.webmvc.api.OpenApiResource.openapiJson(OpenApiResource.java:124) ~[springdoc-openapi-starter-webmvc-api-2.2.0.jar:2.2.0] at org.springdoc.webmvc.api.OpenApiWebMvcResource.openapiJson(OpenApiWebMvcResource.java:111) ~[springdoc-openapi-starter-webmvc-api-2.2.0.jar:2.2.0] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na] at java.base/java.lang.reflect.Method.invoke(Method.java:568) ~[na:na] at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205) ~[spring-web-6.0.13.jar:6.0.13] at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:150) ~[spring-web-6.0.13.jar:6.0.13] at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:118) ~[spring-webmvc-6.0.13.jar:6.0.13] at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:884) ~[spring-webmvc-6.0.13.jar:6.0.13] at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:797) ~[spring-webmvc-6.0.13.jar:6.0.13] at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-6.0.13.jar:6.0.13] at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1081) ~[spring-webmvc-6.0.13.jar:6.0.13] at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:974) ~[spring-webmvc-6.0.13.jar:6.0.13] at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1011) ~[spring-webmvc-6.0.13.jar:6.0.13] at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:903) ~[spring-webmvc-6.0.13.jar:6.0.13] at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:564) ~[tomcat-embed-core-10.1.15.jar:6.0] at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:885) ~[spring-webmvc-6.0.13.jar:6.0.13] at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658) ~[tomcat-embed-core-10.1.15.jar:6.0] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:205) ~[tomcat-embed-core-10.1.15.jar:10.1.15] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149) ~[tomcat-embed-core-10.1.15.jar:10.1.15] at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) ~[tomcat-embed-websocket-10.1.15.jar:10.1.15] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174) ~[tomcat-embed-core-10.1.15.jar:10.1.15] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149) ~[tomcat-embed-core-10.1.15.jar:10.1.15] at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-6.0.13.jar:6.0.13] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.0.13.jar:6.0.13] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174) ~[tomcat-embed-core-10.1.15.jar:10.1.15] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149) ~[tomcat-embed-core-10.1.15.jar:10.1.15] at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-6.0.13.jar:6.0.13] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.0.13.jar:6.0.13] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174) ~[tomcat-embed-core-10.1.15.jar:10.1.15] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149) ~[tomcat-embed-core-10.1.15.jar:10.1.15] at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-6.0.13.jar:6.0.13] at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.0.13.jar:6.0.13] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:174) ~[tomcat-embed-core-10.1.15.jar:10.1.15] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:149) ~[tomcat-embed-core-10.1.15.jar:10.1.15] at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:167) ~[tomcat-embed-core-10.1.15.jar:10.1.15] at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90) ~[tomcat-embed-core-10.1.15.jar:10.1.15] at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482) ~[tomcat-embed-core-10.1.15.jar:10.1.15] at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:115) ~[tomcat-embed-core-10.1.15.jar:10.1.15] at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93) ~[tomcat-embed-core-10.1.15.jar:10.1.15] at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) ~[tomcat-embed-core-10.1.15.jar:10.1.15] at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:340) ~[tomcat-embed-core-10.1.15.jar:10.1.15] at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:391) ~[tomcat-embed-core-10.1.15.jar:10.1.15] at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63) ~[tomcat-embed-core-10.1.15.jar:10.1.15] at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:896) ~[tomcat-embed-core-10.1.15.jar:10.1.15] at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1744) ~[tomcat-embed-core-10.1.15.jar:10.1.15] at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) ~[tomcat-embed-core-10.1.15.jar:10.1.15] at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) ~[tomcat-embed-core-10.1.15.jar:10.1.15] at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) ~[tomcat-embed-core-10.1.15.jar:10.1.15] at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-10.1.15.jar:10.1.15] at java.base/java.lang.Thread.run(Thread.java:840) ~[na:na]   My question is, can we build vim25.jar with dependency to the same jakarta.xml and com.sun.xml packages versions that modern Spring uses.
Hi, We are trying to implement websockets in our plugin UI and it is giving 502 error. To confirm on the support, we had taken 8.0U1 SDK sample and deployed it on Client 8.0U1 and found that same e... See more...
Hi, We are trying to implement websockets in our plugin UI and it is giving 502 error. To confirm on the support, we had taken 8.0U1 SDK sample and deployed it on Client 8.0U1 and found that same error is coming for sample plugin as well. Could you please confirm/help on fixing the sample? we were able to establish the socket connection directly without going through the plugin reverse proxied manifest/backend server(htmlClientSdk.app.getPluginBackendInfo) address. I remember the recommendation is to tunnel all interaction through proxied backend server URL . Does establishing socket connection directly to  plugin backend is acceptable or not? Any implication on plugin certification? Error: vSphere Client version 8.0.0.10000 Sample jar Server log: 2023-11-09 02:21:38.135 ERROR 7164 --- [io-8443-exec-17] c.v.s.r.w.WebSocketMessageHandler : Transport error java.io.IOException: Unable to unwrap data, invalid status [CLOSED] at org.apache.tomcat.util.net.SecureNioChannel.read(SecureNioChannel.java:632) ~[tomcat-embed-core-8.5.31.jar!/:8.5.31] at org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.fillReadBuffer(NioEndpoint.java:1257) ~[tomcat-embed-core-8.5.31.jar!/:8.5.31] at org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.fillReadBuffer(NioEndpoint.java:1230) ~[tomcat-embed-core-8.5.31.jar!/:8.5.31] at org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.read(NioEndpoint.java:1200) ~[tomcat-embed-core-8.5.31.jar!/:8.5.31] at org.apache.tomcat.websocket.server.WsFrameServer.onDataAvailable(WsFrameServer.java:72) ~[tomcat-embed-websocket-8.5.31.jar!/:8.5.31] at org.apache.tomcat.websocket.server.WsFrameServer.doOnDataAvailable(WsFrameServer.java:171) ~[tomcat-embed-websocket-8.5.31.jar!/:8.5.31] at org.apache.tomcat.websocket.server.WsFrameServer.notifyDataAvailable(WsFrameServer.java:151) ~[tomcat-embed-websocket-8.5.31.jar!/:8.5.31] at org.apache.tomcat.websocket.server.WsHttpUpgradeHandler.upgradeDispatch(WsHttpUpgradeHandler.java:148) ~[tomcat-embed-websocket-8.5.31.jar!/:8.5.31] at org.apache.coyote.http11.upgrade.UpgradeProcessorInternal.dispatch(UpgradeProcessorInternal.java:54) [tomcat-embed-core-8.5.31.jar!/:8.5.31] at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:53) [tomcat-embed-core-8.5.31.jar!/:8.5.31] at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:790) [tomcat-embed-core-8.5.31.jar!/:8.5.31] at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1468) [tomcat-embed-core-8.5.31.jar!/:8.5.31] at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) [tomcat-embed-core-8.5.31.jar!/:8.5.31] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [na:1.8.0_392-392] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [na:1.8.0_392-392] at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-embed-core-8.5.31.jar!/:8.5.31] at java.lang.Thread.run(Thread.java:750) [na:1.8.0_392-392] 2023-11-09 02:21:38.135 ERROR 7164 --- [io-8443-exec-17] c.v.s.r.w.WebSocketMessageHandler : Transport error java.io.IOException: java.io.IOException: Unable to wrap data, invalid status [CLOSED] at org.apache.tomcat.websocket.WsRemoteEndpointImplBase.sendMessageBlock(WsRemoteEndpointImplBase.java:315) ~[tomcat-embed-websocket-8.5.31.jar!/:8.5.31] at org.apache.tomcat.websocket.WsRemoteEndpointImplBase.sendMessageBlock(WsRemoteEndpointImplBase.java:258) ~[tomcat-embed-websocket-8.5.31.jar!/:8.5.31] at org.apache.tomcat.websocket.WsSession.sendCloseMessage(WsSession.java:592) [tomcat-embed-websocket-8.5.31.jar!/:8.5.31] at org.apache.tomcat.websocket.WsSession.doClose(WsSession.java:480) [tomcat-embed-websocket-8.5.31.jar!/:8.5.31] at org.apache.tomcat.websocket.WsSession.close(WsSession.java:445) [tomcat-embed-websocket-8.5.31.jar!/:8.5.31] at org.springframework.web.socket.adapter.standard.StandardWebSocketSession.closeInternal(StandardWebSocketSession.java:236) [spring-websocket-5.0.7.RELEASE.jar!/:5.0.7.RELEASE] at org.springframework.web.socket.adapter.AbstractWebSocketSession.close(AbstractWebSocketSession.java:136) [spring-websocket-5.0.7.RELEASE.jar!/:5.0.7.RELEASE] at com.vmware.sample.remote.websocket.WebSocketMessageHandler.handleTransportError(WebSocketMessageHandler.java:66) [classes!/:na] at org.springframework.web.socket.handler.WebSocketHandlerDecorator.handleTransportError(WebSocketHandlerDecorator.java:80) [spring-websocket-5.0.7.RELEASE.jar!/:5.0.7.RELEASE] at org.springframework.web.socket.handler.LoggingWebSocketHandlerDecorator.handleTransportError(LoggingWebSocketHandlerDecorator.java:64) [spring-websocket-5.0.7.RELEASE.jar!/:5.0.7.RELEASE] at org.springframework.web.socket.handler.ExceptionWebSocketHandlerDecorator.handleTransportError(ExceptionWebSocketHandlerDecorator.java:68) [spring-websocket-5.0.7.RELEASE.jar!/:5.0.7.RELEASE] at org.springframework.web.socket.adapter.standard.StandardWebSocketHandlerAdapter.onError(StandardWebSocketHandlerAdapter.java:156) [spring-websocket-5.0.7.RELEASE.jar!/:5.0.7.RELEASE] at org.apache.tomcat.websocket.server.WsHttpUpgradeHandler.onError(WsHttpUpgradeHandler.java:216) [tomcat-embed-websocket-8.5.31.jar!/:8.5.31] at org.apache.tomcat.websocket.server.WsHttpUpgradeHandler.upgradeDispatch(WsHttpUpgradeHandler.java:152) [tomcat-embed-websocket-8.5.31.jar!/:8.5.31] at org.apache.coyote.http11.upgrade.UpgradeProcessorInternal.dispatch(UpgradeProcessorInternal.java:54) [tomcat-embed-core-8.5.31.jar!/:8.5.31] at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:53) [tomcat-embed-core-8.5.31.jar!/:8.5.31] at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:790) [tomcat-embed-core-8.5.31.jar!/:8.5.31] at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1468) [tomcat-embed-core-8.5.31.jar!/:8.5.31] at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) [tomcat-embed-core-8.5.31.jar!/:8.5.31] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [na:1.8.0_392-392] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [na:1.8.0_392-392] at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-embed-core-8.5.31.jar!/:8.5.31] at java.lang.Thread.run(Thread.java:750) [na:1.8.0_392-392] Caused by: java.io.IOException: Unable to wrap data, invalid status [CLOSED] at org.apache.tomcat.util.net.SecureNioChannel.write(SecureNioChannel.java:675) ~[tomcat-embed-core-8.5.31.jar!/:8.5.31] at org.apache.tomcat.util.net.NioBlockingSelector.write(NioBlockingSelector.java:101) ~[tomcat-embed-core-8.5.31.jar!/:8.5.31] at org.apache.tomcat.util.net.NioSelectorPool.write(NioSelectorPool.java:157) ~[tomcat-embed-core-8.5.31.jar!/:8.5.31] at org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.doWrite(NioEndpoint.java:1276) ~[tomcat-embed-core-8.5.31.jar!/:8.5.31] at org.apache.tomcat.util.net.SocketWrapperBase.doWrite(SocketWrapperBase.java:670) ~[tomcat-embed-core-8.5.31.jar!/:8.5.31] at org.apache.tomcat.util.net.SocketWrapperBase.flushBlocking(SocketWrapperBase.java:607) ~[tomcat-embed-core-8.5.31.jar!/:8.5.31] at org.apache.tomcat.util.net.SocketWrapperBase.flush(SocketWrapperBase.java:597) ~[tomcat-embed-core-8.5.31.jar!/:8.5.31] at org.apache.tomcat.websocket.server.WsRemoteEndpointImplServer.doWrite(WsRemoteEndpointImplServer.java:96) ~[tomcat-embed-websocket-8.5.31.jar!/:8.5.31] at org.apache.tomcat.websocket.WsRemoteEndpointImplBase.writeMessagePart(WsRemoteEndpointImplBase.java:494) ~[tomcat-embed-websocket-8.5.31.jar!/:8.5.31] at org.apache.tomcat.websocket.WsRemoteEndpointImplBase.sendMessageBlock(WsRemoteEndpointImplBase.java:309) ~[tomcat-embed-websocket-8.5.31.jar!/:8.5.31] ... 22 common frames omitted
We have an internal monitoring tool for server monitoring. Similarly, we need to integrate vCenter alerts into our monitoring tool. Could you please share how to use the vCenter Alerts API to achieve... See more...
We have an internal monitoring tool for server monitoring. Similarly, we need to integrate vCenter alerts into our monitoring tool. Could you please share how to use the vCenter Alerts API to achieve this ?
Hallo zusammen, ich habe eine neue Vorlage mit Win ltsc 2021 und ein neues Anpassungsskript dafür erstellt. Allerdings scheint das Skript nicht zu starten. Weder nach dem Erstellen der VM, noch wenn... See more...
Hallo zusammen, ich habe eine neue Vorlage mit Win ltsc 2021 und ein neues Anpassungsskript dafür erstellt. Allerdings scheint das Skript nicht zu starten. Weder nach dem Erstellen der VM, noch wenn man es manuell ausführt. Die Datei C:\Windows\Panther\UnattendGC\setupact.txt ist die einzige Logdatei, die ich finden konnte, aber sie scheint ziemlich leer zu sein. Hat jemand eine Idee, warum die Anpassungen nicht ausgeführt werden? Der Name ist kürzer als 15 Zeichen und die Anpassungsspezifikation wurde neu erstellt.     2023-10-24 11:22:28, Info [svchost.exe] Enter WinReIsWimBootEnabled 2023-10-24 11:22:28, Info [svchost.exe] Parameters: pszWinDir: NULL 2023-10-24 11:22:28, Info [svchost.exe] Exit WinReIsWimBootEnabled returns 0 with last error: 0x0 2023-10-24 11:37:05, Info [taskhostw.exe] Enter WinReValidateRecoveryWim 2023-10-24 11:37:05, Info [taskhostw.exe] Update enhanced config info is enabled. 2023-10-24 11:37:05, Info [taskhostw.exe] WinRE is installed 2023-10-24 11:37:06, Info [taskhostw.exe] Loading boot index 1 2023-10-24 11:37:06, Info [taskhostw.exe] winreValidateWimFile took 281 ms. 2023-10-24 11:37:11, Info [taskhostw.exe] WinReValidateRecoveryWimInternal took 5734 ms. 2023-10-24 11:37:11, Info [taskhostw.exe] Exit WinReValidateRecoveryWim return value: 1, last error: 0x0 2023-10-24 11:37:11, Info [taskhostw.exe] Enter WinReConfigureTask 2023-10-24 11:37:11, Info [taskhostw.exe] Parameters: TaskFolder: \Microsoft\Windows\RecoveryEnvironment, TaskName: VerifyWinRE, WinReTaskAction, 1 2023-10-24 11:37:11, Info [taskhostw.exe] Exit WinReConfigureTask return error code: 0x0 2023-10-24 11:57:38, Info [svchost.exe] Enter WinReIsWimBootEnabled 2023-10-24 11:57:38, Info [svchost.exe] Parameters: pszWinDir: NULL 2023-10-24 11:57:38, Info [svchost.exe] Exit WinReIsWimBootEnabled returns 0 with last error: 0x0      
I found that I can get storage pool data from storagePoolDisks.storagePools
I found an example in the vsan-sdk examples that shows how to query the storage pool disks, but I get this error: disks = [disk for storagePool in storagePoolDisks.GetStoragePools() for disk Attr... See more...
I found an example in the vsan-sdk examples that shows how to query the storage pool disks, but I get this error: disks = [disk for storagePool in storagePoolDisks.GetStoragePools() for disk AttributeError: 'vim.vsan.host.VsanManagedDisksInfo' object has no attribute 'GetStoragePools' Sample Code from vsanesastoragepoolsamples.py (from vsan-sdk) [code] def queryStoragePoolDisks(vdms, host):     spec = vim.vsan.host.QueryVsanDisksSpec()     spec.vsanDiskType = vim.vsan.host.VsanDiskType("storagePool")     storagePoolDisks = vdms.QueryVsanManagedDisks(host, spec)     disks = [disk for storagePool in storagePoolDisks.GetStoragePools() for disk                  in storagePool.storagePoolDisks]     return disks [/code]
Thank you for noticing the missing part, Kumar! Will update it.
Please update the sdk documentation. https://developer.vmware.com/docs/19273/GUID-14852F91-1D99-4D2E-AC54-DF27872D98DE.html
Hi Kumar,   For 8.0 release, you can set the property "relevant" to "false" for every menu item that you don't want to be displayed at all. Setting the "visible" property just enables/disable the a... See more...
Hi Kumar,   For 8.0 release, you can set the property "relevant" to "false" for every menu item that you don't want to be displayed at all. Setting the "visible" property just enables/disable the action. For 7.0 releases, the items will always be displayed and will be enabled/disabled based on the "visible" property.   Best Regards, Denis
Hi, Our plugin is build on SDK 7.0U3 and is the minimum supported vSphere client version as well.  We have some actions on vsphere entity(say datastore entity), we would like to show/Hide actions d... See more...
Hi, Our plugin is build on SDK 7.0U3 and is the minimum supported vSphere client version as well.  We have some actions on vsphere entity(say datastore entity), we would like to show/Hide actions depending on the various factors. As per the vSphere Client SDK guide, we were able to enable/disable the actions. But we want to hide the actions instead of Disable like the local plugin SDK does. Is there a way to achieve it? Thanks, Kumar  
Hi all, A vSphere Client SDK has been release for the vSphere 8.0 U2 release. The U2 vSphere Client SDK and release notes can be found on https://developer.vmware.com/web/sdk/8.0/client
hi Gizzie Thank you for your reply. I haven't deleted it yet. "I plan to delete the snapshot." I plan to consolidate the snapshots with "remove all". Since the target VM has a large disk capa... See more...
hi Gizzie Thank you for your reply. I haven't deleted it yet. "I plan to delete the snapshot." I plan to consolidate the snapshots with "remove all". Since the target VM has a large disk capacity, I thought it would take a long time to delete even if it was merged with "remove all". So when I run "remove all" and a power outage occurs, I have to stop the host before the power outage. I don't care if the VM's data is corrupted, I asked if there was a way to cancel the "remove all" before stopping the host.
Hi,   I think Vladi was refering to this thread: https://communities.vmware.com/t5/vSphere-Client-SDK-Discussions/SSL-problems/td-p/2219486 Let us know if you were able to resolve the problem.   ... See more...
Hi,   I think Vladi was refering to this thread: https://communities.vmware.com/t5/vSphere-Client-SDK-Discussions/SSL-problems/td-p/2219486 Let us know if you were able to resolve the problem.   Best Regards, Denis
Hi @VinothCM , Which version of SDK(vSphere Management SDK) you are using? Also, share the steps followed to reproduce this issue? Because vim25.jar is generated from 1.8 java, and it should wo... See more...
Hi @VinothCM , Which version of SDK(vSphere Management SDK) you are using? Also, share the steps followed to reproduce this issue? Because vim25.jar is generated from 1.8 java, and it should work with the LTS version of Java. (8/11/17). - Kiran
Not sure if I understand this completely... Is the snapshot deletion already in progress? If not, and you are concerned that the snapshot deletion will be taking too long, consider stopping the VM a... See more...
Not sure if I understand this completely... Is the snapshot deletion already in progress? If not, and you are concerned that the snapshot deletion will be taking too long, consider stopping the VM and performing a snapshot consolidation instead. Consolidation might be faster than deletion and can help clean up the snapshots. If you still want to do snapshot deletion while power loss is presumably, then I suggest to create a snapshot of the VM before you start deleting snapshots. This will give you a restore point if the deletion is interrupted due to power outage.    
Hi. I have a plan to perform a snapshot deletion. (ESXi 7) I am looking at the following KB I know that I cannot cancel the deletion of a snapshot in the middle. I know that I can't cancel the snap... See more...
Hi. I have a plan to perform a snapshot deletion. (ESXi 7) I am looking at the following KB I know that I cannot cancel the deletion of a snapshot in the middle. I know that I can't cancel the snapshot deletion in the middle because it will destroy the data. https://kb.vmware.com/s/article/1023657 I am assuming that if the disk is large, the deletion will take longer. I asked because the building might lose power in the middle of deleting snapshots. If the building loses power, it will shut down the ESXi host. Is there any way to cancel deleting a snapshot in the middle if the deletion takes a long time and does not finish ? I understand that data can be corrupted.
When we create Anti-Affinity and then Affinity Rule for the same VMs. The Affinity rule should become invalid(enabled = false)  i.e. Anti-Affinity conflicting with Affinity Rule.   API to get the ... See more...
When we create Anti-Affinity and then Affinity Rule for the same VMs. The Affinity rule should become invalid(enabled = false)  i.e. Anti-Affinity conflicting with Affinity Rule.   API to get the status: ClusterComputeResource -> ClusterConfigInfo -> ClusterRuleInfo -> isEnabled() eg: boolean status = ruleInfo[1].getInfo().isEnabled();   Data Object - ClusterRuleInfo(vim.cluster.RuleInfo)   enabled (boolean) ==> Flag to indicate whether or not the rule is enabled. Set this property when you configure the rule. The default value is false (disabled). If there is a rule conflict, the Server can override the setting to disable a rule.
Hi, Just to follow up on this - if you could provide the information from the missing link of the solutions for this, that would be great. However, in the mean-time, I put in place a short term sol... See more...
Hi, Just to follow up on this - if you could provide the information from the missing link of the solutions for this, that would be great. However, in the mean-time, I put in place a short term solution for the problem which works in my development environment (for the remote plugin architecture).  It appears this error usually occurs when your Java program tries to establish an SSL connection with a remote server, but the server's SSL certificate is not trusted by the JVM's default truststore. I am using MacOS for my development environment, for anyone else in a similar situation, this should work to get the sample to run without needing a fully-fledged certification on their VCSA: The short-term solution I used: Import the server's SSL certificate into the JVM's default truststore, using these steps: 1. Locate the JVM's default truststore file. For Java 8, this was in: /Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home/jre/lib/security/cacerts 2. Take a backup of the default truststore file to make sure you can restore it if something goes wrong. 3. Obtain the SSL certificate of the VCSA server. This can be done by connecting to the server using a web browser and exporting the certificate. Alternatively, you can use command-line tools like OpenSSL to retrieve the certificate. I used Chrome to get the .cer file. 4. Use the `keytool` command-line tool, which is provided with the Java Development Kit (JDK), to import the certificate into the truststore. Open a command prompt or terminal and navigate to the directory where `keytool` is located. 5. Run the following command to import the certificate into the truststore: keytool -import -alias <alias_name> -file <path_to_certificate_file> -keystore <path_to_truststore_file> Replace `<alias_name>` with a name you want to assign to the certificate in the truststore. Replace `<path_to_certificate_file>` with the path to the certificate file you obtained earlier. Replace `<path_to_truststore_file>` with the path to the truststore file you located in step 1. 6. When prompted, enter the password for the truststore. The default password for the JVM's default truststore is usually `changeit`. If you have changed it previously, use the updated password. 7. Verify that the certificate has been imported successfully by listing the content of the truststore: keytool -list -keystore <path_to_truststore_file> This will display the aliases of all the certificates in the truststore, including the one you just imported. By importing the server's SSL certificate into the JVM's default truststore, you make it trusted by default when your Java applications establish SSL/TLS connections to that server. You can now run the remote plugin sample code and it should work as expected to show the Chassis objects and UI elements properly.. Hope that helps for now!
HI, I'm having the same error when running the remote sample code for 8.0 U1: at java.lang.Thread.run(Thread.java:745) [na:1.8.0_121] Caused by: org.springframework.web.client.ResourceAccessExcepti... See more...
HI, I'm having the same error when running the remote sample code for 8.0 U1: at java.lang.Thread.run(Thread.java:745) [na:1.8.0_121] Caused by: org.springframework.web.client.ResourceAccessException: I/O error on POST request for "https://<my vcenter fqdn>:443/api/ui/vcenter/session/clone-ticket": sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target; nested exception is javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target   I've tried the links in the thread here, but unfortunately they are broken and don't exist, or don't lead anywhere with a solution any more. Could you please provide the updated link to where the solution is, or provide the solution for this please? Warren