简体   繁体   English

Web服务(服务器-客户端)。 服务器使用外部项目

[英]Web Service (Server - Client). Server uses external project

I'm using a Web Service with this structure: 我正在使用具有以下结构的Web服务:

Server: 服务器:

@WebService @HandlerChain(file="handler-chain.xml") @XmlRootElement 

public class RDA_DenegarRenovacion{

HashMapWrapper map =  new HashMapWrapper();


@WebMethod
public String getServerName() {

    return "RDA - DenegarPropuesta";

}

@WebMethod(operationName="pc_ren_propuesta")
@WebResult(name="hashMapWrapper")

public HashMapWrapper pc_ren_propuesta() {

    HashMap<String,String> realMap = new HashMap<String,String>();
    realMap.put("jaja1", "jeje1");
    realMap.put("jaja2", "jeje2");
    map.setRealMap(realMap);

    //I JUST DECLARE THE FACADE AND SERVICE FROM THE IMPORTED PROJECT, 
    //BUT I'M NOT USING THEM YET
    CommonFacade commonFacade = new CommonFacade();
    CommonDataService service = (CommonDataService) commonFacade.commonDataService;


    return map;
}

In the server method, I just access another java project in the same workspace (declaring facade and service). 在服务器方法中,我只是访问同一工作空间中的另一个Java项目(声明Facade和Service)。

In order to declare classes from another project, I configure the buildpath and I also add the jar commons-discovery-0.2, because if not, I get the error: 为了从另一个项目中声明类,我配置了构建路径,并且还添加了jar commons-discovery-0.2,因为如果没有,则会出现错误:

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/discovery/tools/DiscoverSingleton at com.ibm.ws.webservices.engine.components.logger.LogFactory$2.run(LogFactory.java:144) at com.ibm.ws.security.util.AccessController.doPrivileged(AccessController.java:63) at com.ibm.ws.webservices.engine.components.logger.LogFactory.createLogFactory(LogFactory.java:140) at com.ibm.ws.webservices.engine.components.logger.LogFactory.(LogFactory.java:97) at com.ibm.ws.webservices.engine.xmlsoap.Utils.(Utils.java:49) at com.ibm.ws.webservices.engine.soap.MessageFactoryImpl.(MessageFactoryImpl.java:116) at com.ibm.ws.webservices.engine.soap.SAAJMetaFactoryImpl.newMessageFactory(SAAJMetaFactoryImpl.java:56) at javax.xml.soap.MessageFactory.newInstance(Unknown Source) at com.sun.xml.internal.ws.api.SOAPVersion.(Unknown Source) at com.sun.xml.internal.ws.api.SOAPVersion.(Unknown Source) at com.sun.xml.internal.ws.api.BindingID.(Unknown Source) at com.sun.xml.internal.ws.spi.Provide 线程“主”中的异常java.lang.NoClassDefFoundError:org.apm.ws.webservices.engine.components.logger.LogFactory $ 2.run(LogFactory.java:144)上的org / apache / commons / discovery / tools / DiscoverSingleton com.ibm处的com.ibm.ws.webservices.engine.components.logger.LogFactory.createLogFactory(LogFactory.java:140)处的com.ibm.ws.security.util.AccessController.doPrivileged(AccessController.java:63) ws.webservices.engine.components.logger.LogFactory。(LogFactory.java:97)位于com.ibm.ws.webservices.engine.xmlsoap.Utils。(Utils.java:49)位于com.ibm.ws.webservices。 com.ibm.ws.webservices.engine.soap.SAAJMetaFactoryImpl.newMessageFactory(SAAJMetaFactoryImpl.java:56)处的engine.soap.MessageFactoryImpl。(MessageFactoryImpl.java:116)(javax.xml.soap.MessageFactory.newInstance(未知源)在com.sun.xml.internal.ws.api.SOAPVersion。(未知来源)在com.sun.xml.internal.ws.api.SOAPVersion。(未知来源)在com.sun.xml.internal.ws.api com.sun.xml.internal.ws.spi.Provide上的.BindingID。(未知来源) rImpl.createAndPublishEndpoint(Unknown Source) at javax.xml.ws.Endpoint.publish(Unknown Source) at RDA_DenegarRenovacion.publisher.WsPublisher.main(WsPublisher.java:14) Caused by: java.lang.ClassNotFoundException: org.apache.commons.discovery.tools.DiscoverSingleton at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) ... 14 more rImpl.createAndPublishEndpoint(未知来源),位于javax.xml.ws.Endpoint.publish(未知来源),位于RDA_DenegarRenovacion.publisher.WsPublisher.main(WsPublisher.java:14),原因:java.lang.ClassNotFoundException:org.apache.commons java.net.URLClassLoader上的.discovery.tools.DiscoverSingleton.java.security.AccessController.doPrivileged(本地方法)上的java.net.URLClassLoader.findClass(未知源)上的java.lang.ClassLoader处的。 sun.misc.Launcher $ AppClassLoader.loadClass(java.lang.ClassLoader.loadClass(未知源)处的loadClass(未知源)... 14还有

With all this, I publish the server part, and when running the client, due to the fact I added that external jar, I obtain the following error: 所有这一切,我发布了服务器部分,并且在运行客户端时,由于我添加了该外部jar的事实,我得到以下错误:

Exception in thread "main" javax.xml.ws.soap.SOAPFaultException: HIERARCHY_REQUEST_ERR: An attempt was made to insert a node where it is not permitted. 线程“主”中的异常javax.xml.ws.soap.SOAPFaultException:HIERARCHY_REQUEST_ERR:试图在不允许的节点上插入节点。 at com.sun.xml.internal.ws.fault.SOAP11Fault.getProtocolException(Unknown Source) at com.sun.xml.internal.ws.fault.SOAPFaultBuilder.createException(Unknown Source) at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(Unknown Source) at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(Unknown Source) at com.sun.xml.internal.ws.client.sei.SEIStub.invoke(Unknown Source) at $Proxy29.pcRenPropuesta(Unknown Source) at rda_denegarrenovacion.client.WsClient.main(WsClient.java:21) com.sun.xml.internal.ws.fault.SOAPFaultBuilder.createException(未知来源)com.sun.xml.internal.ws.fault.SOAP11Fault.getProtocolException(未知来源) com.sun.xml.internal.ws.client.sei.sync.Handler.invoke(未知源)com.sun.xml.internal.ws.client.sei.SEIStub处的.client.sei.SyncMethodHandler.invoke(未知源) $ Proxy29上的.invoke(未知来源).pcRenPropuesta(rda_denegarrenovacion.client.WsClient.main(WsClient.java:21)

If I don't declare any class from the other project and I don't import any jar, it works fine. 如果我没有从其他项目中声明任何类,也没有导入任何jar,那么它可以正常工作。

Summary: 摘要:

I need the following. 我需要以下内容。

Client --> Server --> Informix Java project --> Server --> Client. 客户端->服务器-> Informix Java项目->服务器->客户端。

I'm having problems when accessing Informix Java project. 访问Informix Java项目时遇到问题。

Thank you in advance 先感谢您

Problem solved. 问题解决了。

I set JAVA_HOME and Path variables, and I add external wsgen jar. 我设置了JAVA_HOME和Path变量,并添加了外部wsgen jar。 Restarted computer and it worked. 重新启动计算机,它正常工作。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM