Web services Glassfish ClassCastException WebBundleContext和EjbContext
我一直很难将一个简单的web服务部署到GlassFish 3.1.1中,但我在部署时遇到以下异常: 原因:java.lang.ClassCastException:com.sun.enterprise.deployment.annotation.context.WebBundleContext无法强制转换为com.sun.enterprise.deployment.annotation.context.EjbContext 位于org.glassfish.webservices.annotation.handlers.WebServiceProviderHandler.processAnnotation(WebServiceProviderHandler.java:158) 位于org.glassfish.apf.impl.AnnotationProcessorImpl.process(AnnotationProcessorImpl.java:344) ... 42多 这是我的Web服务类:Web services Glassfish ClassCastException WebBundleContext和EjbContext,web-services,glassfish-3,ejb-3.1,Web Services,Glassfish 3,Ejb 3.1,我一直很难将一个简单的web服务部署到GlassFish 3.1.1中,但我在部署时遇到以下异常: 原因:java.lang.ClassCastException:com.sun.enterprise.deployment.annotation.context.WebBundleContext无法强制转换为com.sun.enterprise.deployment.annotation.context.EjbContext 位于org.glassfish.webservices.annotati
@Stateless
@WebServiceProvider(
serviceName = "HelloWorldProviderService",
portName = "HelloWorldProviderPort",
targetNamespace = "http://mydomain.com/wsdl"
)
@ServiceMode(value= Service.Mode.PAYLOAD)
public class HelloWorldProvider implements Provider<Source>
{
@Override
public Source invoke(Source request)
{
StringWriter requestXmlWriter = new StringWriter();
try
{
Transformer copier = TransformerFactory.newInstance().newTransformer();
copier.transform(request, new StreamResult(requestXmlWriter));
System.out.println(requestXmlWriter.toString());
return new StreamSource(new StringReader("<HelloBack/>"));
}
catch (TransformerException e)
{
throw new RuntimeException("Failed to convert");
}
}
}
@无状态
@WebServiceProvider(
serviceName=“HelloWorldProviderService”,
portName=“HelloWorldProviderPort”,
targetNamespace=”http://mydomain.com/wsdl"
)
@ServiceMode(值=Service.Mode.PAYLOAD)
公共类HelloWorldProvider实现提供程序
{
@凌驾
公共源调用(源请求)
{
StringWriter requestXmlWriter=新建StringWriter();
尝试
{
Transformer copier=TransformerFactory.newInstance().newTransformer();
转换(请求,新的StreamResult(requestXmlWriter));
System.out.println(requestXmlWriter.toString());
返回新的StreamSource(新的StringReader(“”);
}
捕获(转换异常e)
{
抛出新的RuntimeException(“转换失败”);
}
}
}
战争布局是
|__ WEB-INF
| |__ web.xml
|
|__ classes
| |__ META-INF
| | |__ ejb-jar.xml
| |
| |__ <classfile>
|
|__ lib
| |__ <empty>
| uuuuuWEB-INF
|| uuuweb.xml
|
|__班级
|| META-INF
|| | | ejb-jar.xml
| |
| |__
|
|__解放党
| |__
这在我使用OpenEjb的测试环境中是有效的,但我需要它来对付GlassFish,建议会很好
多谢各位
-kurt您正在使用NetBeans吗?我这样问是因为这是一个已知的问题,在NetBeans版本6.9中已修复。尝试升级NetBeans,看看是否适合您。Preston感谢您的回复,我读了同一篇文章,但我使用Intellij,我所做的是从WebServiceProvider类中删除无状态,因为它在容器中,所以我对资源有引用,所以我能够使它工作。我主要感到沮丧的是,在我的测试环境(OpenEJB)中,无状态与WebServiceProvider注释一起工作,而不是在生产中的GlassFish中。我必须修改测试分支中的ejb-jar.xml,并将其声明为无状态bean,以访问OpenEJB容器中的资源。