下面是代码片段..必须在日常服务器中调用WSDL,但在调用时(int i = webServiceModuleService.notificationRecieved(“xyz”);)返回异常:(
注意:我的服务中没有任何beaInvoke方法:|
public static void main(String[] args) {
java.sql.Connection conn = null;
InitialContext context;
try {
context = new InitialContext();
DataSource ds = (DataSource) context.lookup("jdbc/dataSourceDS");
conn = ds.getConnection();
} catch (SQLException e) {
} catch (NamingException e) {
}
QueryRunner run = new QueryRunner();
SampleResultSetHandler h = new SampleResultSetHandler();
Object[] res = null;
try {
res = run.query(conn, "select SERVER_IP,SERVER_PORT from SERVER where UPPER(SERVER_NAME)=? ", h, "test");
} catch (SQLException e) {
}
String ip = res[0].toString();
String port = res[1].toString();
String endpointURL = "http://" + ip + ":" + port + "/context-root/WebServiceModuleService";
try {
URL tmpURL = new URL(endpointURL + "?wsdl");
System.err.println(tmpURL);
WebServiceModuleService_Service webServiceModuleService_Service = new WebServiceModuleService_Service(tmpURL,
new QName("/org/parsisys/test/mina/model/services/common/",
"WebServiceModuleService"));
WebServiceModuleService webServiceModuleService = null;
webServiceModuleService = webServiceModuleService_Service.getWebServiceModuleServiceSoapHttpPort();
BindingProvider bp = (BindingProvider) webServiceModuleService;
bp.getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, endpointURL);
// Configure credential providers
Map requestContext = ((BindingProvider) webServiceModuleService).getRequestContext();
try {
setPortCredentialProviderList(requestContext);
} catch (Exception ex) {
ex.printStackTrace();
}
//Call WebService ... ==> Exception :(
int i = webServiceModuleService.notificationRecieved("xyz");
//logp("successfully call the webservice for [ip&port:" + ip + ":" + port + "] [transid : " +transid + "]");
} catch (Exception e) {
//log
//TODO: Clean This
System.err.println(e.getMessage());
e.printStackTrace();
return;
}
}
@Generated("Oracle JDeveloper")
public static void setPortCredentialProviderList(Map requestContext) throws Exception {
// TODO - Provide the required credential values
String username = "";
String password = "";
String clientKeyStore = "";
String clientKeyStorePassword = "";
String clientKeyAlias = "";
String clientKeyPassword = "";
String serverKeyStore = "";
String serverKeyStorePassword = "";
String serverKeyAlias = "";
List credList = new ArrayList();
// Add the necessary credential providers to the list
// Code commented out due to empty username/password value found in the credential.
// credList.add(getUNTCredentialProvider(username, password));
// Code commented out due to empty server keystore value found in the credential.
// credList.add(getBSTCredentialProvider(clientKeyStore, clientKeyStorePassword, clientKeyAlias, clientKeyPassword, serverKeyStore, serverKeyStorePassword, serverKeyAlias, requestContext));
credList.add(getSAMLTrustCredentialProvider());
requestContext.put(WSSecurityContext.CREDENTIAL_PROVIDER_LIST, credList);
}
@Generated("Oracle JDeveloper")
public static CredentialProvider getSAMLTrustCredentialProvider() {
return new SAMLTrustCredentialProvider();
}
daynamic webservice调用是用jdeveloper生成的,它可以在clien't测试器中工作,但在我的模块中,当我调用webservice返回异常时:/
StackTrace是:↓
方法beaInvoke公开为WebMethod,但在wsdl:portType {/ org / parsisys / test / mina /中没有名称为{/ org / parsisys / test / mina / model / services / common /} beaInvoke的对应wsdl操作model / services / common /} WebServiceModuleService javax.xml.ws.WebServiceException:方法beaInvoke公开为WebMethod,但没有相应的wsdl操作,名称为{/ org / parsisys / test / mina / model / services / common /} beaInvoke在com.sun.xml中的com.sun.xml.ws.model.JavaMethodImpl.freeze(JavaMethodImpl.java:382)中的wsdl:portType {/ org / parsisys / test / mina / model / services / common /} WebServiceModuleService中.ws.model.AbstractSEIModelImpl.freeze(AbstractSEIModelImpl.java:124)at com.sun.xml.ws.model.RuntimeModeler.buildRuntimeModel(RuntimeModeler.java:336)at com.sun.xml.ws.db.DatabindingImpl . ( DatabindingImpl.java:99)com.sun.xml.ws.db.DatabindingProviderImpl.create(DatabindingProviderImpl.java:74)at com.sun.xml.ws.db.DatabindingProviderImpl.create(DatabindingProviderImpl.java:58)a t com.sun.xml.ws.db.DatabindingFactoryImpl.createRuntime(DatabindingFactoryImpl.java:120),位于com.sun.xml.ws的com.sun.xml.ws.client.WSServiceDelegate.buildRuntimeModel(WSServiceDelegate.java:882) .client.WSServiceDelegate.createSEIPortInfo(WSServiceDelegate.java:899)at com.sun.xml.ws.client.WSServiceDelegate.addSEI(WSServiceDelegate.java:862)at com.sun.xml.ws.client.WSServiceDelegate.getPort(WSServiceDelegate) .java:451)at weblogic.wsee.jaxws.spi.WLSProvider $ ServiceDelegateImpl.internalGetPort(WLSProvider.java:1698)at weblogic.wsee.jaxws.spi.WLSProvider $ ServiceDelegateImpl $ PortClientInstanceFactory.createClientInstance(WLSProvider.java:1769)at at weblogic.wsee.waxws.spi.ClientInstancePool.takeSimpleClientInstance(ClientInstancePool.java:389)at weblogic.wsee.jaxws.spi.ClientInstancePool.take(ClientInstancePool.java:243)at weblogic.wsee.jaxws.spi.WLSProvider $ ServiceDelegateImpl $ 3 .apply(WLSProvider.java:1555)at weblogic.wsee.jaxws.spi.WLSProvider $ ServiceDelegateImpl $ 3.apply(WLSProvider) .java:1517)位于comlog的weblogic.wsee.jaxws.spi.ClientIdentityRegistry.initClientIdentityFeatureAndCall(ClientIdentityRegistry.java:1456)at weblogic.wsee.jaxws.spi.WLSProvider $ ServiceDelegateImpl.getPort(WLSProvider.java:1513) . 位于com.sun.xml.ws.client.WSServiceDelegate的weblogic.wsee.jaxws.spi.WLSProvider $ ServiceDelegateImpl.getPort(WLSProvider.java:1477)中的xml.ws.client.WSServiceDelegate.getPort(WSServiceDelegate.java:420) . 位于org.parsisys的org.parsisys.test.mina.model.service.WebServiceModuleService_Service.beaInvokeSuper(WebServiceModuleService_Service.java)的javax.xml.ws.Service.getPort(Service.java:119)中的getPort(WSServiceDelegate.java:402) org.parsisys.test.mina上的org.parsisys.test.mina.model.service.WebServiceModuleService_Service.getWebServiceModuleServiceSoapHttpPort(WebServiceModuleService_Service.java)中的.test.mina.model.service.WebServiceModuleService_Service $ beaVersion0_31.getWebServiceModuleServiceSoapHttpPort(WebServiceModuleService_Service.java:51) .files.notificati on.queue.NotificationQueueRecieved $ beaVersion0_11.onMessage(NotificationQueueRecieved.java:330)atg.parsisys.test.mina.files.notification.queue.NotificationQueueRecieved.onMessage(NotificationQueueRecieved.java)at weblogic.jms.client.JMSSession.onMessage( JMSSession.java:5107)at weblogic.jms.client.JMSSession.execute(JMSSession.java:4775)at weblogic.jms.client.JMSSession.executeMessage(JMSSession.java:4170)at weblogic.jms.client.JMSSession.access $ web(JMSSession.java:127)at weblogic.jms.client.JMSSession $ UseForRunnable.run(JMSSession.java:5627)at weblogic.work.SelfTuningWorkManagerImpl $ WorkAdapterImpl.run(SelfTuningWorkManagerImpl.java:666)at weblogic.invocation.ComponentInvocationContextManager weblogic.invocation.work.PartitionUtility.runWo上的weblogic.invocation.ComponentInvocationContextManager.runAs(ComponentInvocationContextManager.java:333)weblogic.work.LivePartitionUtility.doRunWorkUnderContext(LivePartitionUtility.java:54)中的._runAs(ComponentInvocationContextManager.java:348) rkUnderContext(PartitionUtility.java:41)at weblogic.work.SelfTuningWorkManagerImpl.runWorkUnderContext(SelfTuningWorkManagerImpl.java:640)at weblogic.work.ExecuteThread.execute(ExecuteThread.java:406)at weblogic.work.ExecuteThread.run(ExecuteThread.java) :346)
请帮我 . TNX