我在一个每个内部应用程序在一个单独的Tomcat实例上运行并使用特定TCP端口的地方工作.什么是最适合这些应用程序的IANA端口范围,以避免端口号与服务器上的任何其他进程冲突?
基于http://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xml,这些是我目前看到的选项:
一个.我将我的一个应用程序配置为使用端口X
b.应用程序停机几分钟或几小时(取决于应用程序的性质),让端口闲置一段时间,
c.操作系统将端口号X分配给另一个进程,例如,当该进程充当需要与另一个服务器建立TCP连接的客户端时.这是成功的,因为它属于动态范围,并且就操作系统而言,X当前未被使用,并且
d.应用程序无法启动,因为端口X已在使用中
我正在开发一个需要从我们的内部生产数据库获取数据的外部网站(在DMZ中).
我提出的所有设计都被拒绝了,因为网络部门不允许从DMZ进入任何类型的连接(WCF,Oracle等).
来自网络方面的建议通常分为两类 -
1)将所需数据导出到DMZ中的服务器,并最终以某种方式导出修改/插入的记录,或
2)从内部进行轮询,不断询问DMZ中的服务是否有任何需要维修的请求.
我反对建议1,因为我不喜欢坐在DMZ中的数据库的想法.对于所做的事情的性质,选项2似乎是一个荒谬的额外复杂性.
这些是唯一合法的解决方案吗?有一个明显的解决方案我错过了吗?"DMZ中的无连接"法令是否实用?
编辑:我经常听到的一句话是"没有大公司允许网站连接内部以获取实时生产数据.这就是他们发送确认电子邮件的原因".它真的是这样的吗?
我有两个使用Maven的项目.第一个是包含实用程序类和方法的库.第二个项目是一个将库作为依赖项的实际应用程序.我的库在内部使用第三方库.
所以这些是依赖:
但是,我不希望第三方库类在我的应用程序的编译时可用.这是因为应用程序由大型团队支持,并且我希望防止人们在应用程序中意外使用第三方库中的方法,因为某些类名称和某些方法名称在两者之间是相似的.当然,第三方库必须在运行时在我的应用程序中可用.
如果所有依赖项的范围都是编译的,那么它就无法实现我的目标.有没有办法在Maven 3中实现这一目标?
我的多个使用 maven-assembly-plugin 的 Maven 项目需要将两个二进制文件复制到一个文件夹中。
这些是我所有项目共有的两个原始文件:
执行程序
程序运行程序
我希望重复使用这组文件。它们可能来自诸如 JAR 或 ZIP 文件之类的依赖项,以便稍后在我的构建过程中解压它们。这样,如果我以后选择升级二进制文件,我可以创建我的公共项目的新版本,只需将依赖项更改为我的公共项目。这样做的另一个原因是因为我想在单个项目中使用最少的构建相关文件的数量。
现在,棘手的部分是我需要在解压依赖项时重命名每个文件。例如,对于项目 A,我需要按如下方式复制文件:
bin/projectA_procrun.exe
bin/projectA_procrunw.exe
我的部分解决方案是将这两个文件放在每个 Maven 项目的 src/main/build/bin 文件夹中。
这并不理想,但至少我能够重用本页中描述的通用程序集文件的内容:
<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd">
<id>my_assembly</id>
<formats>
<format>zip</format>
</formats>
<files>
<file>
<source>src/main/build/bin/procrun.exe</source>
<outputDirectory>bin</outputDirectory>
<destName>${myexecutable.name}.exe</destName>
</file>
<file>
<source>src/main/build/bin/procrunw.exe</source>
<outputDirectory>bin</outputDirectory>
<destName>${myexecutable.name}w.exe</destName>
</file>
</files>
<!-- Additional details ommitted -->
</assembly>
Run Code Online (Sandbox Code Playgroud)
Assembly 中的outputFileNameMapping属性允许重命名工件,但不允许重命名程序集中的文件。
一次失败的尝试是将每个文件注册为一个单独的 Maven 工件。这样,我可以在与我的每个工件对应的部分中使用 outputFileNameMapping。
我遇到的问题是 Nexus 不喜欢将“exe”作为工件。
关于如何通过增强我的部分或采用替代方法来实现预期结果的任何想法?