如果我更改JNDI端口,在Eclipse中关闭JBoss的问题

时间:2008-10-06 07:38:32

标签: java eclipse jboss jboss-tools

第一阶段

自从我改变以来,我在Eclipse下关闭运行的JBoss实例时遇到了问题   JBoss的JNDI端口。当然,我可以从控制台视图关闭它,但不能   停止按钮(它仍然在默认的1099端口搜索JNDI端口)。我在看   转向任何解决方案。谢谢!

使用过的环境:

  • JBoss 4.0.2(使用默认
  • Eclipse 3.4.0。 (使用JBoss Tools 2.1.1.GA)

默认端口:1098,1099 更改端口:11098,11099

我在jbosspath / server / default / conf / jboss-service.xml中更改了以下部分:

   <!-- ==================================================================== -->
   <!-- JNDI                                                                 -->
   <!-- ==================================================================== -->

   <mbean code="org.jboss.naming.NamingService"
      name="jboss:service=Naming"
      xmbean-dd="resource:xmdesc/NamingService-xmbean.xml">
      <!-- The call by value mode. true if all lookups are unmarshalled using
      the caller's TCL, false if in VM lookups return the value by reference.
      -->
      <attribute name="CallByValue">false</attribute>
      <!-- The listening port for the bootstrap JNP service. Set this to -1
        to run the NamingService without the JNP invoker listening port.
      -->
      <attribute name="Port">11099</attribute>
      <!-- The bootstrap JNP server bind address. This also sets the default
      RMI service bind address. Empty == all addresses
       -->
      <attribute name="BindAddress">${jboss.bind.address}</attribute>
      <!-- The port of the RMI naming service, 0 == anonymous -->
      <attribute name="RmiPort">11098</attribute>
      <!-- The RMI service bind address. Empty == all addresses
       -->
      <attribute name="RmiBindAddress">${jboss.bind.address}</attribute>
      <!-- The thread pool service used to control the bootstrap lookups -->
      <depends optional-attribute-name="LookupPool"
         proxy-type="attribute">jboss.system:service=ThreadPool</depends>
   </mbean>

   <mbean code="org.jboss.naming.JNDIView"
        name="jboss:service=JNDIView"
        xmbean-dd="resource:xmdesc/JNDIView-xmbean.xml">
   </mbean>

Eclipse设置:

关于我的JBoss Tools首选项: 我有一个以前的版本,我遇到了这个问题,我在JbossTools中读到了一些bug修复,所以更新到2.1.1.GA.现在按钮改变了,我有一个新的首选项视图,但我无法修改任何东西......似乎也是异常的:

错误对话框:

堆栈跟踪:

javax.naming.CommunicationException: Could not obtain connection to any of these urls: localhost:1099 [Root exception is javax.naming.CommunicationException: Failed to connect to server localhost:1099 [Root exception is javax.naming.ServiceUnavailableException: Failed to connect to server localhost:1099 [Root exception is java.net.ConnectException: Connection refused: connect]]]
    at org.jnp.interfaces.NamingContext.checkRef(NamingContext.java:1385)
    at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:579)
    at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:572)
    at javax.naming.InitialContext.lookup(InitialContext.java:347)
    at org.jboss.Shutdown.main(Shutdown.java:202)
Caused by: javax.naming.CommunicationException: Failed to connect to server localhost:1099 [Root exception is javax.naming.ServiceUnavailableException: Failed to connect to server localhost:1099 [Root exception is java.net.ConnectException: Connection refused: connect]]
    at org.jnp.interfaces.NamingContext.getServer(NamingContext.java:254)
    at org.jnp.interfaces.NamingContext.checkRef(NamingContext.java:1370)
    ... 4 more
Caused by: javax.naming.ServiceUnavailableException: Failed to connect to server localhost:1099 [Root exception is java.net.ConnectException: Connection refused: connect]
    at org.jnp.interfaces.NamingContext.getServer(NamingContext.java:228)
    ... 5 more
Caused by: java.net.ConnectException: Connection refused: connect
    at java.net.PlainSocketImpl.socketConnect(Native Method)
    at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:305)
    at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:171)
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:158)
    at java.net.Socket.connect(Socket.java:452)
    at java.net.Socket.connect(Socket.java:402)
    at java.net.Socket.<init>(Socket.java:309)
    at java.net.Socket.<init>(Socket.java:211)
    at org.jnp.interfaces.TimedSocketFactory.createSocket(TimedSocketFactory.java:69)
    at org.jnp.interfaces.TimedSocketFactory.createSocket(TimedSocketFactory.java:62)
    at org.jnp.interfaces.NamingContext.getServer(NamingContext.java:224)
    ... 5 more
Exception in thread "main" 

第二阶段:

在File / new / other / server中创建新服务器之后,它确实出现在首选项选项卡中。现在停止按钮正在工作(服务器接收关闭消息而不需要对jndi端口进行任何额外修改 - 现在没有机会)但它仍然会抛出错误消息,尽管不同,它无一例外地堆栈跟踪:“服务器JBoss 4.0 Server无法停止。“

7 个答案:

答案 0 :(得分:3)

以下是此问题的详细修复: 重新映射jndi端口时,Eclipse WTP服务器连接器不会关闭JBoss。

这是因为默认服务器连接器配置文件不为jndiPort使用自己的别名。 eclipse.org上也讨论了这个问题: http://www.eclipse.org/forums/index.php?t=msg&goto=489439&S=0db4920aab0a501c80a626edff84c17d#msg_489439

解决方案来自eclipse中的.serverdef文件:


<eclipse>\plugins\org.eclipse.jst.server.generic.jboss_1.5.105.v200709061325\servers\jboss*.serverdef

他们声明了jndi端口的xml属性:


<property id="jndiPort"
 label="%jndiPort"
 type="string"
 context="server"
 default="1099" /> 

这只需要在serverdef具有编码的STOP命令的地方使用:

所以这个:


 <stop>
  <mainClass>org.jboss.Shutdown</mainClass>
  <workingDirectory>${serverRootDirectory}/bin</workingDirectory>
  <programArguments>-S</programArguments>
  <vmParameters></vmParameters>
  <classpathReference>jboss</classpathReference>
 </stop>

成为这个:


 <stop>
  <mainClass>org.jboss.Shutdown</mainClass>
  <workingDirectory>${serverRootDirectory}/bin</workingDirectory>
  <programArguments>-s jnp://${serverAddress}:${jndiPort}</programArguments>
  <vmParameters></vmParameters>
  <classpathReference>jboss</classpathReference>
 </stop>

可以通过与jndi连接的定义进行比较来验证其理念:


 <jndiConnection>
  <providerUrl>jnp://${serverAddress}:${jndiPort}</providerUrl>
<initialContextFactory>org.jnp.interfaces.NamingContextFactory</initialContextFactory>
  <jndiProperty>
   <name></name>
   <value></value>
  </jndiProperty>
 </jndiConnection>

归功于这个一般案例修复的灵感来自:Moisa Laurentiu Florin。正是他们的贡献让我在$ {jndiPort}中寻找替代硬编码值的方法。

此修复程序更正了两个普通的Eclipse WTP服务器连接器。我还在调查JBOss IDE连接器

答案 1 :(得分:3)

打开jboss-path \ bin \ shutdown.jar

示例:jboss-4.2.3.GA \ bin \ shutdown.jar

并打开jboss-path \ bin \ shutdown.jar \ jndi.properties

并更改

java.naming.provider.url = jnp:// localhost:1099 to java.naming.provider.url = jnp:// localhost:11099

答案 2 :(得分:1)

好的,您需要做的是File-&gt; New-&gt; Other-&gt; Server,并在那里设置您的JBoss服务器。然后它将出现在Preferences-&gt; JBossTools-&gt; Servers。

卷积。

答案 3 :(得分:0)

在MyEclipse服务器配置中,您会找到“Optional Shutdown Argument”字段,该字段填充了默认值

--shutdown

将其更改为

-s jnp://localhost:11099 --shutdown

编辑:

抱歉,这个答案与MyEclipse有关。但是,必须有一些地方可以在您的环境中指定JBoss shutdown命令。 也许您看看“运行......”配置?

答案 4 :(得分:0)

你应该修改文件“/home/fmoisa/workspace/eclipse/plugins/org.eclipse.jst.server.generic.jboss_1.5.206.v20090115/servers/jboss42.serverdef”这个:

        org.jboss.Shutdown         $ {} serverRootDirectory / bin中         -S         -Djboss.boot.loader.name = shutdown.bat         jboss.shutdown     

到此:

        org.jboss.Shutdown         $ {} serverRootDirectory / bin中         -S -sjnp:// localhost:11099         -Djboss.boot.loader.name = shutdown.bat         jboss.shutdown     

gl all;)

答案 5 :(得分:0)

使用JBoss工具提供的服务器适配器,而不是Eclipse WTP默认的服务器适配器。

然后你可以简单地双击服务器,你可以编辑JNDI端口(如果你不做任何事情,那么从XML配置中自动获取btw。)。您还可以通过启动配置中的命令行参数来设置JNDI端口,但这比设置端口值更麻烦。

答案 6 :(得分:0)

这在JBoss 6.0.0M3中已经改变。

现在停止命令:

  

“ - s service:jmx:rmi:/// jndi / rmi:// localhost:1090 / jmxrmi”

请注意,端口也发生了变化:它不再是1099 的JNDI端口,而是 RMI / JMX端口1090 。因此,您需要在服务器定义中使用另一个配置参数。

我不知道JBoss 6.0.0M3服务器是否需要“JNDI端口”参数。

我在http://www.cs.hs-rm.de/~knauf/public/有一个修改过的eclipse插件,其中包含6.0.0M3的服务器定义,包括此更改。该站点还链接到JBoss论坛帖子,其中包含有关此更改的更多详细信息。

祝你好运

Wolfgang Knauf