当前位置:编程学习 > JAVA >>

ejb3+jboss6+myeclipse8.6:的问题,连个HelloWorld都抛异常 在线等高手

接口
package com;

public interface IHello

{

    public String hello();

}
无状态的bean
package com.impl;
import javax.ejb.Remote;
import javax.ejb.Stateless;
import com.IHello;
@Remote({IHello.class})
@Stateless
public class Hello implements IHello

{

 

    @Override
    public String hello()

    {

       System.out.println("hello world!");

       return "HEL!!";

    }

 

}
客户端

package com.client;

import java.rmi.RMISecurityManager;
import java.util.Properties;

import javax.naming.InitialContext;
import javax.naming.NamingException;

import com.IHello;

public class FirstTest {
public static void main(String[] args) throws NamingException

{

Properties props = new Properties();
props.setProperty("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory");
props.setProperty("java.naming.provider.url", "localhost:8888");

InitialContext ctx = new InitialContext(props);
IHello hello = (IHello) ctx.lookup("Hello/remote");

hello.hello();

}

}
这个是《ejb3.0实例教程》上的例子照着敲得但是还是出现了异常
异常信息
Exception in thread "main" javax.naming.CommunicationException: Could not obtain connection to any of these urls: localhost:8888 and discovery failed with error: javax.naming.CommunicationException: Receive timed out [Root exception is java.net.SocketTimeoutException: Receive timed out]
at org.jnp.interfaces.NamingContext.discoverServer(NamingContext.java:1690)
at org.jnp.interfaces.NamingContext.checkRef(NamingContext.java:1761)
at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:695)
at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:688)
at javax.naming.InitialContext.lookup(InitialContext.java:392)
at com.client.FirstTest.main(FirstTest.java:21)
Caused by: java.net.SocketTimeoutException: Receive timed out
at java.net.PlainDatagramSocketImpl.receive0(Native Method)
at java.net.PlainDatagramSocketImpl.receive(PlainDatagramSocketImpl.java:136)
at java.net.DatagramSocket.receive(DatagramSocket.java:712)
at org.jnp.interfaces.NamingContext.discoverServer(NamingContext.java:1659)
... 5 more
 [Root exception is javax.naming.CommunicationException: Failed to retrieve stub from server localhost/127.0.0.1:8888 [Root exception is java.io.EOFException]]
at org.jnp.interfaces.NamingContext.checkRef(NamingContext.java:1780)
at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:695)
at org.jnp.interfaces.NamingContext.lookup(NamingContext.java:688)
at javax.naming.InitialContext.lookup(InitialContext.java:392)
at com.client.FirstTest.main(FirstTest.java:21)
Caused by: javax.naming.CommunicationException: Failed to retrieve stub from server localhost/127.0.0.1:8888 [Root exception is java.io.EOFException]
at org.jnp.interfaces.NamingContext.getServer(NamingContext.java:329)
at org.jnp.interfaces.NamingContext.checkRef(NamingContext.java:1746)
... 4 more
Caused by: java.io.EOFException
at java.io.ObjectInputStream$PeekInputStream.readFully(ObjectInputStream.java:2281)
at java.io.ObjectInputStream$BlockDataInputStream.readShort(ObjectInputStream.java:2750)
at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:780)
at java.io.ObjectInputStream.<init>(ObjectInputStream.java:280)
at org.jnp.interfaces.NamingContext.getServer(NamingContext.java:314)
... 5 more



--------------------编程问答-------------------- 学习中,我EJB没用过,LZ加油! --------------------编程问答-------------------- 怎么没人回答啊,自己顶起 --------------------编程问答-------------------- 自己顶顶顶顶 --------------------编程问答-------------------- at com.client.FirstTest.main(FirstTest.java:21)
这句的问题。超时? --------------------编程问答-------------------- 程序连不上jboss长时间得不到响应坑定会抱着个异常,我的问题是Could not obtain connection to any of these urls: localhost:8888 and discovery failed这个 --------------------编程问答-------------------- 自己在访问一下localhost:8888。在jndi list view下看是否能够找到你的hello/remote --------------------编程问答-------------------- url里面不要端口试试 --------------------编程问答-------------------- props.setProperty("java.naming.provider.url", "localhost:8888");

这个你改过了吗,
如果没有改过,jboss as 6 默认是1099的 ,

你可以看看
%jboss_home%\server\default\conf\bindingservice.beans\META-INF\bindings-jboss-beans.xml里面

   <bean name="StandardBindings" class="java.util.HashSet">
      <constructor>
         <parameter class="java.util.Collection">
            <set elementClass="org.jboss.services.binding.ServiceBindingMetadata">
            <!-- ********************* conf/jboss-service.xml ****************** -->

            <!-- Naming Service -->
            <bean class="org.jboss.services.binding.ServiceBindingMetadata">
               <property name="serviceName">jboss:service=Naming</property>
               <property name="bindingName">Port</property>
               <property name="port">1099</property>
               <property name="description">The listening socket for the Naming service</property>
            </bean>

是什么,props.setProperty("java.naming.provider.url", "localhost:8888");端口就是什么
补充:Java ,  Java EE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,