Teamviewer 与 JNDI 冲突 - 为传出使用更高的端口号 (win7)
Teamviewer conflicted with JNDI - use higher port numbers for outgoing (win7)
Teamviewer 使用本地端口 1098 建立传出连接,该端口也是 JNDI 端口。
我花了 2 个小时才意识到错误是什么,因为我专注于由此产生的异常,例如:
Exception: javax.transaction.NotSupportedException: Cannot set transactional mode, error is setAutoCommit() is not allowed - use TransactionHelper instead
javax.transaction.NotSupportedException:
Cannot set transactional mode, error is setAutoCommit() is not allowed - use TransactionHelper instead
at daoframework.daofactory.transactions.LocalUserTransaction.begin(LocalUserTransaction.java:78)
有什么方法可以阻止 teamviewer 使用这个端口吗?
发现使用:
$ netstat -aon | grep 1098
TCP XX.XXX.XX.XX:1098 XXX.XX.XXX.XXX:80 ESTABLISHED 2596
然后在任务管理器中查找PID。
更新
这似乎更像是一个 windows 7 问题。在 windows vista 及以后:
To comply with Internet Assigned Numbers Authority (IANA)
recommendations, Microsoft has increased the dynamic client port range
for outgoing connections in Windows Vista and in Windows Server 2008.
The new default start port is 49152, and the default end port is
65535. This is a change from the configuration of earlier versions of Windows that used a default port range of 1025 through 5000.
有没有办法修补 windows 7 以使用更高的端口号进行传出连接?
更新2
我的windows7机器确实运行端口限制低
C:\Windows\system32>netsh int ipv4 show dynamicport tcp
Protocol tcp Dynamic Port Range
---------------------------------
Start Port : 1025
Number of Ports : 64510
我从中找到了答案:https://support.microsoft.com/en-us/kb/929851
你可以使用netsh命令调整这个范围,如下:
netsh int <ipv4|ipv6> set dynamic <tcp|udp> start=number num=range
This command sets the dynamic port range for TCP. The start port is
number, and the total number of ports is range. The following are
sample commands:
netsh int ipv4 set dynamicport tcp start=10000 num=1000
netsh int ipv4 set dynamicport udp start=10000 num=1000
netsh int ipv6 set dynamicport tcp start=10000 num=1000
netsh int ipv6 set dynamicport udp start=10000 num=1000
将范围设置为以下内容:
netsh int ipv4 set dynamicport tcp start=49152 num=16384
最后,即使临时端口应该是短暂的,像 teamviewer 这样的应用程序可能会使用 keep-alive
请求并占用端口更长的时间。
Teamviewer 使用本地端口 1098 建立传出连接,该端口也是 JNDI 端口。
我花了 2 个小时才意识到错误是什么,因为我专注于由此产生的异常,例如:
Exception: javax.transaction.NotSupportedException: Cannot set transactional mode, error is setAutoCommit() is not allowed - use TransactionHelper instead
javax.transaction.NotSupportedException:
Cannot set transactional mode, error is setAutoCommit() is not allowed - use TransactionHelper instead
at daoframework.daofactory.transactions.LocalUserTransaction.begin(LocalUserTransaction.java:78)
有什么方法可以阻止 teamviewer 使用这个端口吗?
发现使用:
$ netstat -aon | grep 1098
TCP XX.XXX.XX.XX:1098 XXX.XX.XXX.XXX:80 ESTABLISHED 2596
然后在任务管理器中查找PID。
更新
这似乎更像是一个 windows 7 问题。在 windows vista 及以后:
To comply with Internet Assigned Numbers Authority (IANA) recommendations, Microsoft has increased the dynamic client port range for outgoing connections in Windows Vista and in Windows Server 2008. The new default start port is 49152, and the default end port is 65535. This is a change from the configuration of earlier versions of Windows that used a default port range of 1025 through 5000.
有没有办法修补 windows 7 以使用更高的端口号进行传出连接?
更新2
我的windows7机器确实运行端口限制低
C:\Windows\system32>netsh int ipv4 show dynamicport tcp
Protocol tcp Dynamic Port Range
---------------------------------
Start Port : 1025
Number of Ports : 64510
我从中找到了答案:https://support.microsoft.com/en-us/kb/929851
你可以使用netsh命令调整这个范围,如下:
netsh int <ipv4|ipv6> set dynamic <tcp|udp> start=number num=range
This command sets the dynamic port range for TCP. The start port is number, and the total number of ports is range. The following are sample commands:
netsh int ipv4 set dynamicport tcp start=10000 num=1000 netsh int ipv4 set dynamicport udp start=10000 num=1000 netsh int ipv6 set dynamicport tcp start=10000 num=1000 netsh int ipv6 set dynamicport udp start=10000 num=1000
将范围设置为以下内容:
netsh int ipv4 set dynamicport tcp start=49152 num=16384
最后,即使临时端口应该是短暂的,像 teamviewer 这样的应用程序可能会使用 keep-alive
请求并占用端口更长的时间。