java webmethod_javax.xml.ws.WebServiceException:方法beaInvoke公开为WebMethod

下面是代码片段..必须在日常服务器中调用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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用Java开发Web服务(Web Services)需要使用到JAX-WSJava API for XML Web Services)技术栈。JAX-WS提供了一组API和工具,用于开发和部署Web服务,支持SOAP(Simple Object Access Protocol)和WSDL(Web Services Description Language)标准。 以下是使用Java和JAX-WS开发Web服务的一般步骤: 1. 定义Web服务接口,可以使用Java语言中的接口定义,使用@WebService注解标注接口。 ```java import javax.jws.WebMethod; import javax.jws.WebService; @WebService public interface HelloWorld { @WebMethod String sayHello(String name); } ``` 2. 实现Web服务接口,使用@WebService注解标注实现类。 ```java import javax.jws.WebService; @WebService(endpointInterface = "com.example.HelloWorld") public class HelloWorldImpl implements HelloWorld { public String sayHello(String name) { return "Hello " + name; } } ``` 3. 使用JAX-WS提供的工具生成WSDL文件,可以使用wsgen命令或者使用Eclipse等IDE自动生成。 4. 发布Web服务,可以使用Endpoint类发布Web服务,指定WSDL文件的URL。 ```java import javax.xml.ws.Endpoint; public class HelloWorldPublisher { public static void main(String[] args) { Endpoint.publish("http://localhost:8080/hello", new HelloWorldImpl()); } } ``` 5. 使用Web服务,可以使用Java的WebServiceClient类生成客户端代码,调用Web服务。 以上就是使用Java开发Web服务的一般步骤。当然,具体实现还需要根据具体的业务需求和技术实现细节进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值