如何为远程oracle服务器配置监听

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何为远程oracle服务器配置监听相关的知识,希望对你有一定的参考价值。

首先登陆到远程linux,使用oracle用户登陆
然后修改%ORACLE_HOME/network/admin/LISTENER.ORA文件
修改为如下内容(按照远程服务器配置)
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = /oracle/product/10g)
(PROGRAM = extproc)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))
)
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = testserver3)(PORT = 1521))
)
)
其中,LISTENER是服务器中监听进程的名称;
PROTOCOL 表明所使用的网络协议,若是TCP/IP协议,则该值必须为“TCP”;
HOST 表示服务器的网络地址,为服务器的IP或者网内的机器名;
PORT 指TCP/IP协议在主机中所占用端口号,ORACLE缺省使用1521,是在安装ORACLE数据库时定义的,在安装时可以改变,安装完成后不能改变此值;
SID_NAME 指服务器上运行的ORACLE数据库名称,该值应与.bash_profile文件中的环境变量ORACLE_SID相同(一般情况下此文件为缺省值“PLSExtProc”);
ORACLE_HOME 是指ORACLE数据库的主目录,该值也应与. bash_profile文件中的环境变量ORACLE_HOME相同。
希望能帮到您!
参考技术A Windows系统的话就远程登陆到机器,找到开始菜单中oracle软件快捷方式,找到netca进行监听设置
若是linux系统的话,就telnet登陆到服务器上,使用oracle用户登陆,执行netca命令进行设置

如何为 Spring Boot 应用程序配置端口

【中文标题】如何为 Spring Boot 应用程序配置端口【英文标题】:How to configure port for a Spring Boot application 【发布时间】:2014-01-31 17:16:15 【问题描述】:

如何配置 Spring Boot 应用程序监听的 TCP/IP 端口,使其不使用默认端口 8080。

【问题讨论】:

如果有人感兴趣,这里展示了如何拥有多个端口 - ***.com/questions/36357135/… 如果您使用“yml”文件进行配置,那么您可以使用此服务器:端口:8081 还将您的主类注释为“@SpringBootApplication”并删除@EnableAutoConfiguration 您的项目 [application.properties] 用于添加 server.port=8080 在应用程序属性中设置server.port=8080。此配置在org.springframework.boot.autoconfigure.web 下的ServerProperties.class 类中。 【参考方案1】:

作为said in docs 或者使用命令行选项将server.port 设置为系统属性到jvm -Dserver.port=8090 或者在/src/main/resources/ 中添加application.properties

server.port=8090

随机端口使用

server.port=0

/src/main/resources/ 中添加application.yml

server:
  port : 8090

【讨论】:

使用随机端口时,可以通过@Value("$local.server.port")获取端口信息 实际上命令行选项是--server.port=8090 而不是-Dserver.port=8090。 docs.spring.io/spring-boot/docs/current/reference/html/… 作为对这个答案的补充:根据spring docs,您可以将application.properties 放在其他路径上。就我而言,这很有帮助。 -Dserver.port=XXXX 对我不起作用。我使用了OS环境变量模式:$ SERVER_PORT=8090 java -jar <path/to/my/jar> (1) java -Dserver.port=XXXX -jar <path/to/my/jar> 和 (2) java -jar <path/to/my/jar> --server.port=YYYY 都有效。第一个命令定义server.port 系统属性,第二个命令通过命令行参数传递属性(main 方法中的String... args)。此外,如果你使用java -Dserver.port=XXXX -jar <path/to/my/jar> --server.port=YYYY 运行,YYYY 优先于XXXX,这就是 Spring Boot Externalized Configuration 如此迷人的原因。【参考方案2】:

您可以通过覆盖配置中的EmbeddedServletContainerFactory bean 来指定端口(基于java 或xml)。在那里,您可以为使用的嵌入式 servlet 容器指定端口。请参阅Spring Boot - Core“嵌入式 Servlet 容器支持”段落和示例。希望这会有所帮助。

【讨论】:

直接链接:docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/… 这是程序化覆盖部分的当前链接:docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/…【参考方案3】:

如果您使用的是application.yml,请添加以下行

server:
     port: 9000

当然还有 0 表示随机端口。

【讨论】:

这似乎不起作用。我在 application.yml 中使用了 server.port 并且它工作了【参考方案4】:

有两种主要方法可以在 Spring Boot 应用程序中更改嵌入式 Tomcat 中的端口。

修改 application.properties

首先你可以试试 /resources 文件夹中的 application.properties 文件:

server.port = 8090

修改虚拟机选项

第二种方式,如果你想避免修改任何文件并签入你只需要在本地的东西,你可以使用 vm arg:

转到运行 -> 编辑配置 -> 虚拟机选项

-Dserver.port=8090

此外,如果您需要更多信息,可以在此处查看以下博客文章:Changing the port on a Spring Boot Application

【讨论】:

在 STS 4 中它在运行 -> 运行配置 -> 主,然后向下滚动到带有参数名称和值的表【参考方案5】:

    正如大家所说,你可以在application.properties中指定server.port = 9000(可以是任何其他值)

    如果您在项目中使用弹簧执行器,默认情况下它指向 8080,如果要更改,请在 application.properties 中提及ma​​nagement.port = 9001(可以是任何其他值)

【讨论】:

【参考方案6】:

另外,您可以通过编程方式配置端口。

对于 Spring Boot 2.x.x:

@Configuration
public class CustomContainer implements WebServerFactoryCustomizer<ConfigurableServletWebServerFactory> 
  public void customize(ConfigurableServletWebServerFactory factory)
    factory.setPort(8042);
  

对于旧版本:

@Configuration
public class ServletConfig 
    @Bean
    public EmbeddedServletContainerCustomizer containerCustomizer() 
        return (container -> 
            container.setPort(8012);
        );
    

【讨论】:

当您在自己的配置文件中有端口并想在运行时设置它时,这是有效且非常有用的。 当我需要将应用程序部署到 AWS Elastic Beanstalk 服务以从环境变量中获取端口时,这很有帮助。 当你想要一个独立的单元或集成测试时,这非常有用,+1。 当端口的环境变量已经以不同的名称定义时非常有用。 不是@Configuration 而不是@Controller?如果有,请更新。【参考方案7】:

确实,最简单的方法是设置 server.port 属性。

如果您使用 STS 作为 IDE,从 3.6.7 版本开始,您实际上有 Spring Properties Editor 用于打开属性文件。

此编辑器为所有 Spring Boot 属性提供自动完成功能。如果你写 port 并按 CTRL + SPACE,server.port 将是第一个选项。

【讨论】:

或者,如果您使用 Intellij IDEA,自动完成功能也可以。 ;)【参考方案8】:

您可以通过以下方法添加端口。

    运行 -> 配置部分

    application.xml 中添加server.port=XXXX

【讨论】:

您的意思是application.yml,您使用的是什么IDE?请具体。【参考方案9】:

你可以在java代码中设置端口:

HashMap<String, Object> props = new HashMap<>();
props.put("server.port", 9999);

new SpringApplicationBuilder()
    .sources(SampleController.class)                
    .properties(props)
    .run(args);

或者在application.yml中:

server:
    port: 9999

或者在application.properties中:

server.port=9999

或者作为命令行参数:

-Dserver.port=9999

【讨论】:

只有在 applications.properties 或 .yml 中没有设置端口时,才可以使用 HashMap。 我有第二个“应用程序”类作为实用程序,我只想在其中设置一个不同的端口。因此,所有基于配置文件的方法对我都没有帮助。接近放弃我发现了你的程序化方法。谢谢!【参考方案10】:

当您需要以编程方式执行此操作时,您可以在启动时进行设置:

System.getProperties().put( "server.port", 80 );
SpringApplication.run(App.class, args);

这可能有助于环境相关端口等问题。 祝你有美好的一天

【讨论】:

System.setProperty("server.port", 80); 是实现相同目的的另一种方式。 @hd1,我将我们的答案添加到主要答案中,请检查并根据需要进行修改【参考方案11】:

如果你想在本地运行它,使用这个 -

mvn spring-boot:run -Drun.jvmArguments='-Dserver.port=8085'

Spring Boot 2.0 开始,以下是有效的命令(线索为 here):

mvn spring-boot:run -Dspring-boot.run.arguments=--server.port=8085

【讨论】:

从 Spring Boot 2 开始,你应该使用spring-boot.run.jvmArguments【参考方案12】:

在我的情况下添加声明

server.port=$port:8081

覆盖默认的 tomcat 服务器端口。

【讨论】:

【参考方案13】:

您也可以使用SERVER_PORT 环境变量来配置Spring Boot 端口。只需设置环境变量并重启应用即可:

set SERVER_PORT=9999 // on windows machine
export SERVER_PORT=9999 // on linux

请注意,如果您没有在系统范围内设置这些环境变量,您应该在同一个会话中运行启动应用程序。

【讨论】:

【参考方案14】:

您可以在 /src/main/resources/ 下的 application.properties 中进行设置

server.port = 8090

【讨论】:

【参考方案15】:

将此添加到您的 application.properties 文件中

server.port= 8080

【讨论】:

欢迎来到 SO :-) 请看How to Answer 为什么要在一年后添加相同的asnwer?!?并且server.port 8080 是 Java 属性文件的错误语法...【参考方案16】:

例如使用其他答案中提到的属性 server.port=8080 绝对是一种方法。只是想提一下,您还可以公开环境属性:

SERVER_PORT=8080

由于 spring boot 能够替换“.”在最近的版本中,环境变量的“_”和小写为大写。 这在容器中特别有用,您只需定义环境变量而不添加/编辑application.properties 或通过命令行传递系统属性(即-Dserver.port=$PORT

【讨论】:

SERVER_PORT=8081 mvn spring-boot:run【参考方案17】:

"server.port=8080" 仅在您通过 main 方法将应用程序作为 jar 运行时才有效,

如果您通过 tomcat 容器将此应用程序作为 war 文件运行,则此配置将不起作用。

【讨论】:

【参考方案18】:

application.properties 中包含以下属性

server.port=8080

【讨论】:

这不起作用。什么application.properties?哪些属性可以覆盖这个?我怎么能确定 Spring 正在接受它?【参考方案19】:

如果您要在命令环境中将应用程序作为 jar 文件运行,只需键入“SERVER_PORT=***”作为前缀。要执行的完整命令如下所示:

SERVER_PORT=8080 java -jar ***.jar

如果你想在 Linux 后台运行应用程序,带有 'nohup' 的命令将如下所示:

SERVER_PORT=8080 nohup java -jar ***.jar &

【讨论】:

【参考方案20】:

由于 Spring Boot 提供 various configuration externalization mechanism(通过各种 PropertySource 实现和/或按顺序连接到 Environment 对象的处理器),您可以通过以下方式设置 jar 存档的任何属性 outside方法:

    通过命令行参数传递属性作为应用程序参数

    java -jar <path/to/my/jar> --server.port=7788
    

    来自SPRING_APPLICATION_JSON 中的属性(Spring Boot 1.3.0+)

    在 U*IX shell 中定义环境变量:

    SPRING_APPLICATION_JSON='"server.port":7788' java -jar <path/to/my/jar>
    

    通过使用Java系统属性:

    java -Dspring.application.json='"server.port":7788' -jar <path/to/my/jar>
    

    通过命令行参数传递:

    java -jar <path/to/my/jar> --spring.application.json='"server.port":7788'
    

    定义JVM系统属性

    java -Dserver.port=7788 -jar <path/to/my/jar>
    

    定义操作系统环境变量

    U*IX 外壳

    SERVER_PORT=7788 java -jar <path/to/my/jar>
    

    窗户

    SET SERVER_PORT=7788
    java -jar <path/to/my/jar>
    

    将属性放入./config/application.properties配置文件

    server.port=7788
    

    然后运行:

     java -jar <path/to/my/jar>
    

    将属性放置在./config/application.yaml

    server:
        port: 7788
    

    然后运行:

     java -jar <path/to/my/jar>
    

    将属性放在./application.properties

    server.port=7788
    

    然后运行:

     java -jar <path/to/my/jar>
    

    将属性放置在./application.yaml

    server:
        port: 7788
    

    然后运行:

     java -jar <path/to/my/jar>
    

您可以将以上方法组合在一起,列表中的前一种配置优先于后一种。

例如:

SERVER_PORT=2266 java -Dserver.port=5566 -jar <path/to/my/jar> --server.port=7788

服务器将启动并侦听端口 7788。

这非常有用,可以在 PropertySources 中提供具有较低优先级的默认属性(通常打包在存档中或在源代码中编码),然后在运行时环境中覆盖它。这就是Spring Boot的设计理念:

开箱即用,但随着需求开始偏离默认设置,请尽快退出。


SERVER_NAMEserver.name 的转换由 Relaxed Binding 完成。

【讨论】:

【参考方案21】:

正如Spring documentation 中所述,有几种方法可以做到这一点:

在命令行中设置端口(例如 8888)

-Dserver.port=8888--server.port=8888

例如:java -jar -Dserver.port=8888 test.jar

或者你在application.properties中设置端口

server.port=$port:4588

或(在 application.yml 中使用 yaml 语法)

server:
   port: $port:4588

如果-Dport(或-Dserver.port)传递的端口是在命令行中设置的,那么这个端口将被考虑在内。如果没有,则默认端口为 4588。

如果你想在属性文件中强制使用任何环境变量的端口,你只需要写:

server.port=8888

【讨论】:

【参考方案22】:

默认端口为:8080,但我们可以在 application.properties 中自定义端口号 如下图

spring.mvc.view.prefix=/WEB-INF/jsp/
spring.mvc.view.suffix=.jsp
server.port = 5050 -- #here we can give any port number.

【讨论】:

【参考方案23】:

您可以在 spring boot 项目的资源文件夹中的 application.properties 文件中配置您的端口。

server.port="port which you need"

【讨论】:

【参考方案24】:

在资源中存在的application.properties 文件中:

server.port=8082

【讨论】:

【参考方案25】:

三种方法

1 在application.properties 文件中设置 server.port 属性

server.port = 8090

2 在application.yml 文件中设置服务器端口属性

server:
     port: 8090

3 在main方法中设置属性为系统属性

System.setProperty("server.port","8090");

【讨论】:

【参考方案26】:

扩展其他答案:

测试文档中有一节解释了如何在集成测试中配置端口:

41.3 Testing Spring Boot applications 41.3.3 Working with random ports

在集成测试中,使用注释 @SpringBootTestwebEnvironment 值进行端口配置。


随机端口:

@SpringBootTest(webEnvironment=WebEnvironment.RANDOM_PORT)

您可以使用与@Value("$local.server.port") 相同的@LocalServerPort 注入值。

示例:

随机端口测试配置:

@RunWith(SpringRunner.class
@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT)
public class ExampleTest 
   ...
   @LocalServerPort //to inject port value
   int port;


定义端口:

@SpringBootTest(webEnvironment=WebEnvironment.DEFINED_PORT)

如果已定义,则从 server.port 获取值。

如果使用@TestPropertySource(properties = "server.port=9192") 定义,它将覆盖其他定义的值。 如果没有,则从src/test/resources/application.properties(如果存在)中获取值。 最后,如果未定义,则以默认 8080 开头。

例子:

定义端口测试配置:

@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT)
@TestPropertySource(properties = "server.port=9192")
public class DemoApplicationTests 

    @Test
    public void contextLoads() 
    


【讨论】:

【参考方案27】:

只需在项目的src/main/resources 中有一个application.properties 并提供给那里

server.port=****

其中**** 指的是端口号。

【讨论】:

【参考方案28】:

这对我有用:

添加了自定义容器类:

@Component
public class CustomContainer implements EmbeddedServletContainerCustomizer 

    @Override
    public void customize(ConfigurableEmbeddedServletContainer configurableEmbeddedServletContainer) 
       configurableEmbeddedServletContainer.setPort(8888);
    


但这仍然没有使用端口 8888。

然后我在我的主要方法的“@SpringBootApplication”类上设置“scanBasePackages”属性:(scanBasePackages = "custom container package")

@SpringBootApplication(scanBasePackages = "com.javabrains.util")
public class CourseApiApp 

    public static void main (String args []) 
        SpringApplication.run(CourseApiApp.class, args);
    

它开始拾取自定义容器中设置的端口。

【讨论】:

【参考方案29】:

由于嵌入式 Tomcat,大部分 springboot 运行在 port:8080 上。在某些情况下,它可能会引发错误port 8080 already in use。为了避免此类问题,我们可以配置服务器端口。

使用 application.properties

添加server.port=9898

关于运行时配置

使用以下参数运行您的应用程序。

spring-boot:run -Drun.jvmArguments='-Dserver.port=8081'

【讨论】:

【参考方案30】:

1.1 通过属性文件更新。

/src/main/resources/application.properties

server.port=8888

通过 yaml 文件更新。

   server:

     port: 8888

EmbeddedServletContainerCustomizer

@Component
public class CustomContainer implements EmbeddedServletContainerCustomizer 

    @Override
    public void customize(ConfigurableEmbeddedServletContainer container) 

        container.setPort(8888);

    


【讨论】:

以上是关于如何为远程oracle服务器配置监听的主要内容,如果未能解决你的问题,请参考以下文章

TNS-12541:无监听程序。连接远程服务器上的oracle数据库,提示无监听程序。

oracle怎么配置监听

如何为 SQL Server 访问配置 ngrok

Oracle数据库

如何为 Spring Boot 应用程序配置端口

PLSQL远程连接Oracle报连接超时,PLSQ本地连接Oracle正常时怎么回事,请大侠给说一下