Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Azure的Java SDK-RoleEnvironment.getCurrentRoleInstance()出错_Java_Azure_Tomcat7_Azure Role Environment - Fatal编程技术网

Azure的Java SDK-RoleEnvironment.getCurrentRoleInstance()出错

Azure的Java SDK-RoleEnvironment.getCurrentRoleInstance()出错,java,azure,tomcat7,azure-role-environment,Java,Azure,Tomcat7,Azure Role Environment,我已经使用Tomcat7部署了一个worker角色和一个非常简单的测试servlet,它应该只显示服务实例的ID(我想跨多个实例测试会话管理解决方案) 我正在使用Azure java SDK(github.com/WindowsAzure/Azure java SDK) 问题是,当我调用以下命令时,Tomcat会抛出一个错误: RoleEnvironment.getCurrentRoleInstance().getId() 引发的实际错误是: com.microsoft.windowsazur

我已经使用Tomcat7部署了一个worker角色和一个非常简单的测试servlet,它应该只显示服务实例的ID(我想跨多个实例测试会话管理解决方案)

我正在使用Azure java SDK(github.com/WindowsAzure/Azure java SDK)

问题是,当我调用以下命令时,Tomcat会抛出一个错误:

RoleEnvironment.getCurrentRoleInstance().getId()
引发的实际错误是:

com.microsoft.windowsazure.serviceruntime.RoleEnvironmentNotAvailableException
com.microsoft.windowsazure.serviceruntime.RoleEnvironment.initialize(RoleEnvironment.java:77)
com.microsoft.windowsazure.serviceruntime.RoleEnvironment.getCurrentRoleInstance(RoleEnvironment.java:331)
com.anubex.test.TestSessionServlet.doGet(TestSessionServlet.java:35)
javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
root cause

java.lang.RuntimeException: java.io.FileNotFoundException: \\.\pipe\WindowsAzureRuntime (The system cannot find the file specified)
com.microsoft.windowsazure.serviceruntime.FileInputChannel.getInputStream(FileInputChannel.java:33)
com.microsoft.windowsazure.serviceruntime.RuntimeVersionProtocolClient.getVersionMap(RuntimeVersionProtocolClient.java:41)
com.microsoft.windowsazure.serviceruntime.RuntimeVersionManager.getRuntimeClient(RuntimeVersionManager.java:48)
com.microsoft.windowsazure.serviceruntime.RoleEnvironment.initialize(RoleEnvironment.java:74)
com.microsoft.windowsazure.serviceruntime.RoleEnvironment.getCurrentRoleInstance(RoleEnvironment.java:331)
com.anubex.test.TestSessionServlet.doGet(TestSessionServlet.java:35)
javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
root cause

java.io.FileNotFoundException: \\.\pipe\WindowsAzureRuntime (The system cannot find the file specified)
java.io.FileInputStream.open(Native Method)
java.io.FileInputStream.<init>(FileInputStream.java:120)
java.io.FileInputStream.<init>(FileInputStream.java:79)
com.microsoft.windowsazure.serviceruntime.FileInputChannel.getInputStream(FileInputChannel.java:30)
com.microsoft.windowsazure.serviceruntime.RuntimeVersionProtocolClient.getVersionMap(RuntimeVersionProtocolClient.java:41)
com.microsoft.windowsazure.serviceruntime.RuntimeVersionManager.getRuntimeClient(RuntimeVersionManager.java:48)
com.microsoft.windowsazure.serviceruntime.RoleEnvironment.initialize(RoleEnvironment.java:74)
com.microsoft.windowsazure.serviceruntime.RoleEnvironment.getCurrentRoleInstance(RoleEnvironment.java:331)
com.anubex.test.TestSessionServlet.doGet(TestSessionServlet.java:35)
javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)

不确定如何/在何处创建。有什么想法吗?

RoleEnvironmentNotAvailableException告诉您代码没有在Azure角色的上下文中运行。在为Azure开发应用程序时,有两种方法可以使您的应用程序处于Azure角色的上下文中:它要么在Azure服务器上的云中运行,要么在作为Azure SDK一部分的计算仿真程序中运行

在您的情况下,看起来您既没有在云中运行,也没有在模拟器中运行,因此会引发异常。要解决此问题,您需要设置项目以使用emulator。以下是有关如何执行此操作的演练:


作为旁注,您可以通过检查RoleEnvironment.isAvailable()来检查您是否在Azure角色的上下文中运行,也可以通过检查RoleEnvironment.isEmulated()来检查它是否被模拟(即,在开发中运行与在云中运行).RoleEnvironmentNotAvailableException告诉您代码未在Azure角色的上下文中运行。在为Azure开发应用程序时,有两种方法可以使您的应用程序处于Azure角色的上下文中:它要么在Azure服务器上的云中运行,要么在作为Azure SDK一部分的计算仿真程序中运行

在您的情况下,看起来您既没有在云中运行,也没有在模拟器中运行,因此会引发异常。要解决此问题,您需要设置项目以使用emulator。以下是有关如何执行此操作的演练:


作为补充说明,您可以通过检查RoleEnvironment.isAvailable()来检查您是否在Azure角色的上下文中运行,也可以通过检查RoleEnvironment.isEmulated()来检查它是否是仿真的(即,在开发中运行与在云中运行)。

我偶然发现了相同的问题,下面是对帮助的描述:

希望这有帮助


Patriek

我偶然发现了同样的问题和以下帮助说明:

希望这有帮助

Patriek

我猜您正在使用它来运行Java项目。在WindowsAzure服务运行时中,有两种机制提供RoleEnviroment信息。第一个是通过.NET程序集,第二个是通过Windows命名的管道。第一种方法用于.NET应用程序,第二种方法用于非.NET语言编写的应用程序。但是,除非通过ServiceDefinition文件中的ProgramEntryPoint启动程序,否则第二种方法将不可用

您所面临的场景是通过第一种方法启动的,但Java SDK正试图通过第二种方法访问RoleEnviroment。当时失败了

有两种缓解策略值得探索。A.更新以向Java公开RoleEnviroment信息。B.通过ProgramEntryPoint运行AzureRunMe。我会很好奇事情的进展

我猜您正在使用运行Java项目。在WindowsAzure服务运行时中,有两种机制提供RoleEnviroment信息。第一个是通过.NET程序集,第二个是通过Windows命名的管道。第一种方法用于.NET应用程序,第二种方法用于非.NET语言编写的应用程序。但是,除非通过ServiceDefinition文件中的ProgramEntryPoint启动程序,否则第二种方法将不可用

您所面临的场景是通过第一种方法启动的,但Java SDK正试图通过第二种方法访问RoleEnviroment。当时失败了


有两种缓解策略值得探索。A.更新以向Java公开RoleEnviroment信息。B.通过ProgramEntryPoint运行AzureRunMe。我会很好奇事情的进展

我在你的回答中看到了逻辑,但我在部署在Azure角色上的解决方案上遇到了此错误,如果角色环境不可用,我会感到非常惊讶…我在你的回答中看到了逻辑,但我在部署在Azure角色上的解决方案上遇到此错误,如果角色环境不可用,我会感到非常惊讶…嗨,Albert。谢谢你的想法-我正在使用AzureRunMe(我工作两个10度)。。。这个问题已经有一年了,并不是什么让我夜不能寐的事情,但是很高兴看到AzureRunMe在社区中被使用。嗨,阿尔伯特。谢谢你的想法-我正在使用AzureRunMe(我工作两个10度)。。。这个问题已经有一年了,并不是什么让我夜不能寐的事情,但很高兴看到AzureRunMe正在社区中使用。
\\.\pipe\WindowsAzureRuntime