从来没有像下面代码中那样同时靠默认属性实现同一个接口来使用。看了一个视频,尚学堂的ejb3.0实例,里面使用的这种方法,而且运行正常。所以我也想试试看,结果部署时出错了,错误提示放在下面,大致意思就是远程访问和本地访问同时存在云云。
我想问的是,我在哪里做错了,因为确实有人成功过。我用的环境是jboss5.0.1.ga,他用的是4.x,还请有经验的朋友指教一下,不胜感谢。
//bean实现 @Stateless @Remote @Local public class HelloWorldBean implements HelloWorld { public String sayHello(String name) { return name+"说:你好世界。"; } } //错误提示 [code="java"]10:52:45,093 ERROR [AbstractKernelController] Error installing to Real: name=vfsfile:/D:/jboss-5.0.1.GA/server/default/deploy/FirstEJB_R_L.jar/ state=PreReal mode=Manual requiredState=Real org.jboss.deployers.spi.DeploymentException: Error deploying FirstEJB_R_L.jar: Cannot designate both javax.ejb.Local and javax.ejb.Remote annotations without 'value' attribute on HelloWorldBean. [EJBTHREE-1025] at org.jboss.ejb3.deployers.Ejb3Deployer.deploy(Ejb3Deployer.java:201) at org.jboss.ejb3.deployers.Ejb3Deployer.deploy(Ejb3Deployer.java:103) at org.jboss.deployers.vfs.spi.deployer.AbstractVFSRealDeployer.internalDeploy(AbstractVFSRealDeployer.java:45) at org.jboss.deployers.spi.deployer.helpers.AbstractRealDeployer.deploy(AbstractRealDeployer.java:50) at org.jboss.deployers.plugins.deployers.DeployerWrapper.deploy(DeployerWrapper.java:171) at org.jboss.deployers.plugins.deployers.DeployersImpl.doDeploy(DeployersImpl.java:1439) at org.jboss.deployers.plugins.deployers.DeployersImpl.doInstallParentFirst(DeployersImpl.java:1157) at org.jboss.deployers.plugins.deployers.DeployersImpl.install(DeployersImpl.java:1098) at org.jboss.dependency.plugins.AbstractControllerContext.install(AbstractControllerContext.java:348) at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:1598) at org.jboss.dependency.plugins.AbstractController.incrementState(AbstractController.java:934) at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:1062) at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:984) at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:822) at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:553) at org.jboss.deployers.plugins.deployers.DeployersImpl.process(DeployersImpl.java:781) at org.jboss.deployers.plugins.main.MainDeployerImpl.process(MainDeployerImpl.java:698) at org.jboss.system.server.profileservice.ProfileServiceBootstrap.loadProfile(ProfileServiceBootstrap.java:304) at org.jboss.system.server.profileservice.ProfileServiceBootstrap.start(ProfileServiceBootstrap.java:205) at org.jboss.bootstrap.AbstractServerImpl.start(AbstractServerImpl.java:405) at org.jboss.Main.boot(Main.java:209) at org.jboss.Main$1.run(Main.java:547) at java.lang.Thread.run(Thread.java:619) Caused by: javax.ejb.EJBException: Cannot designate both javax.ejb.Local and javax.ejb.Remote annotations without 'value' attribute on HelloWorldBean. [EJBTHREE-1025] at org.jboss.ejb3.EJBContainer.checkForDuplicateLocalAndRemoteInterfaces(EJBContainer.java:688) at org.jboss.ejb3.EJBContainer.processMetadata(EJBContainer.java:644) at org.jboss.ejb3.Ejb3Deployment.processEJBContainerMetadata(Ejb3Deployment.java:415) at org.jboss.ejb3.Ejb3Deployment.start(Ejb3Deployment.java:523) at org.jboss.ejb3.deployers.Ejb3Deployer.deploy(Ejb3Deployer.java:194) ... 22 more 10:52:45,406 ERROR [ProfileServiceBootstrap] Failed to load profile: Summary of incomplete deployments (SEE PREVIOUS ERRORS FOR DETAILS): DEPLOYMENTS IN ERROR: Deployment "vfsfile:/D:/jboss-5.0.1.GA/server/default/deploy/FirstEJB_R_L/" is in error due to the following reason(s): javax.ejb.EJBException: Cannot designate both javax.ejb.Local and javax.ejb.Remote annotations without 'value' attribute on HelloWorldBean. [EJBTHREE-1025]
问题补充:
楼下两位大概没有看清楚问题,我的意思是有真实例子证实了这样可行,但我却没有做成功。
hantsy兄的提议有些绝对,有很多项目是需要本地和远程两种调用方式的,比如临时资源不够的时候。
lovewhzlq兄的说法是否有些偏差?jndi查找名是可以使用“*/local”这样的方式查找,只要访问方式指定就可以了吧,而且我是在部署时就出现问题,还并没有查找。