cancel
Showing results for 
Search instead for 
Did you mean: 

Get "Unable to extract web services deployment data..." when deploying app

Former Member
0 Kudos

Hi All

I'm in the process of migrating several JEE applications from JBoss 4.2.3. I want to do it in such a way that no vendor-specific code or annotations are used since I want to support both JBoss and NetWeaver from the same code line.

When I tried to deploy one of the applications, I got this error:

-snip-


	2. Client path 'C:\myprojects\ide\eclipse\sap\auth_app\auth_app.ear'
		Deploy status is 'Aborted'
		Description:'1. Exception occured during web services deployment. Unable to extract web services deployment data for archive auth_ejb.jar, application com.izazi/auth_app.
		 -> class java.lang.NullPointerException'.
		SDA : name 'auth_app', vendor 'com.izazi', location 'localhost', version '2009.05.07.14.36.09', software type ('J2EE', sub type ''), csn component '', dependencies :[none]

-snip-

I tried matching what I have with the SAP Help tutorials and cannot find anything wrong. Any ideas, anyone?

I'm using SAP Enhancement Package 1 for SAP NetWeaver Developer Studio 7.1 SP01 and the SAP Server that came with it.

Regards,

Johan

Accepted Solutions (0)

Answers (5)

Answers (5)

Former Member
0 Kudos

Hi Johan,

The two WebServices that we are trying to publish are:


@javax.jws.WebService(name="ReceivePPCommand", targetNamespace="http://xxx/extservices")
public interface ReceivePPCommand {

	void receiveResourcesCodesFromSAP(ResourceCodeMessage[] resourceCodes);
...

}


@Service("receivePPCommandBean")
@WebService(endpointInterface = "xxx.extservices.ReceivePPCommand", targetNamespace="http://xxx/extservices")
public class ReceivePPCommandImpl implements ReceivePPCommand {

   @Transactional(propagation = Propagation.SUPPORTS)
    public void receiveResourcesCodesFromSAP(ResourceCodeMessage[] resourceCodes) {
             ...
    }

...
}


@javax.jws.WebService(name="ReceiveSAPCommand ", targetNamespace="http://xxx/extservices")
public interface ReceiveSAPCommand {

	void receiveSAPDocumentFromSAP(SAPDocumentMessage[] sapDocumentMessage);
}


@Service("receiveSAPCommandBean")
@WebService(endpointInterface = "xxx.extservices.ReceiveSAPCommand ", targetNamespace="http://xxx/extservices")
public class ReceiveSAPCommandImpl implements ReceiveSAPCommand {
    public void receiveSAPDocumentFromSAP(SAPDocumentMessage[] sapDocumentMessageArray) {
      ...
    }
}

Do you have any idea?

Thank you very much.

Best regards,

Taciana

Former Member
0 Kudos

Hi Taciana

I have not yet dealt with web services that are not based on stateless session ejbs, so I don't know the differences between what you're trying to do and what I did, but try specifying values for portName and serviceName in the @WebService annotation for you implementation classes as well. I had to do so to make mine work.

Hope that helps

Johan

Former Member
0 Kudos

Hello Johan! Hello Yulkyar!

Thank you for answer.

I am afraid we have another problem. Our application has worked fine with one WebService, but when I added a second one, the same error has came back. Both WebServices have the annotations.

Do you have any idea?

Our application uses Spring Framework and has a applicationContext-webservice.xml like this:

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
		xmlns:p="http://www.springframework.org/schema/p" xmlns:aop="http://www.springframework.org/schema/aop"
		xmlns:context="http://www.springframework.org/schema/context" xmlns:jee="http://www.springframework.org/schema/jee"
		xmlns:util="http://www.springframework.org/schema/util"
		xmlns:tx="http://www.springframework.org/schema/tx"
		xmlns:jaxws="http://cxf.apache.org/jaxws"
		xsi:schemaLocation="
			http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
			http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
			http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd
			http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-2.5.xsd
			http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
			http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-2.0.xsd
			http://cxf.apache.org/jaxws classpath:jaxws.xsd
			http://cxf.apache.org/configuration/beans classpath:cxf-beans.xsd">

 	<import resource="classpath:META-INF/cxf/cxf.xml" />
	<import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" />
	<import resource="classpath:META-INF/cxf/cxf-servlet.xml" />
	
	<jaxws:endpoint 
	  id="receivePPCommandImpl" 
	  implementor="#receivePPCommandBean" implementorClass="xxx.ReceivePPCommandImpl"
	  address="/ReceivePPCommandImpl" />
	  
	  <jaxws:endpoint 
	  id="receiveSAPCommandImpl" 
	  implementor="#receiveSAPCommandBean" implementorClass="xxx.ReceiveSAPCommandImpl" 
	  address="/ReceiveSAPCommandImpl" />

</beans>

Thank you in advance.

Best regards,

Taciana

Former Member
0 Kudos

Hi Taciana

I'm afraid I am unfamiliar with Spring so posting that descriptor file is meaningless to me. Rather post the top couple of lines of your beans and interfaces.

@Yulkyar: I'm afraid you're much too kind to NetWeaver. It simply does not work if you don't do it exactly the way NetWeaver wants it. My experience with NetWeaver so far leads me to believe that the NetWeaver team did exactly enough to get certification and not one byte more. I've worked with Borland's AppServer (yes, they did one too), JBoss (since v 2) and IBM's WebFear (sorry, I mean WebSphere) so I believe I am allowed a litte twist of the knife.

Regards,

Johan

Former Member
0 Kudos

Hello,

The JAX-WS specification does not requirire to provide values for any of the @WebService annotation's properties

but for the SAP implementation it is strongly recommended to provide as much information as you can like:

name, targetNamespace, serviceName, wsdlLocation, portName.

Sorry for my delayed answer!

Best Regards,

Yulkyar

Edited by: Yulkyar Myudzhelit on May 26, 2009 8:43 AM

Former Member
0 Kudos

Hi,

I am happy to report that I've found out how to make this work. It seems that NetWeaver requires the @WebService annotation on the implementation class as well as on the endpoint interface class. I don't believe the specification demands it, however. So unless I'm mistaken, NetWeaver is more demanding than the spec. Be that as it may, now I can at least move on.

Regards,

Johan

Former Member
0 Kudos

Hello Johan,

I am afraid we have the same error as you. But, we already use de @WebService annotation on the interface and on the implementation.

Could you please post an example of your @WebService annotation?

Our is like this:

@WebService
public interface ReceiveSAPCommand {

...

}

@Service("receiveSAPCommandBean")
@WebService(endpointInterface = "xxx.ReceiveSAPCommand")
public class ReceiveSAPCommandImpl implements ReceiveSAPCommand {

...

}

Thank you in advance.

Best regards,

Taciana

Former Member
0 Kudos

Hi Taciana

Here's my interface:

@WebService(name="HelloRemote", targetNamespace="http://sap.com/tutorial/helloworld/")
@Remote
public interface HelloRemote {

	@WebMethod(operationName="sayHello")
	public String sayHello (@WebParam(name="name")
	String name);

}

...and here's my implementation.

@WebService(endpointInterface="com.sap.tutorial.helloworld.HelloRemote", portName="HelloBeanPort", serviceName="HelloService", targetNamespace="http://sap.com/tutorial/helloworld/")
@Stateless(name="HelloBean")
public class HelloBean implements HelloRemote, HelloLocal {
	   private String message = "Hello, ";
	   public String sayHello(String name) {
                     return message + name;
	   }
}

I hope that helps.

Regards,

Johan

Former Member
0 Kudos

Hi Johan,

To be able to resolve your issue, we'd need to know more about the exception.

Could you please send the stack trace of the deployment exception?

You can find it in defaultTraces of SAP NetWeaver AS in a location similar to C:\usr\sap\<your_server_instance_name>\J<intstance_number>\j2ee\cluster\serverX\log.

Or you can just send me the application ear , if you can't find the stack trace.

Best Regards,

Yulkyar

Former Member
0 Kudos

Thanks for taking the time to reply, Yulkyar. I cannot see any way to upload the log file, so I'll paste the stacktrace in here:


#2.0 #2009 05 11 11:00:18:609#+0200#Error#com.sap.engine.services.tc~bl~deploy_controller#
com.sap.#BC-JAS-DPL#tc~bl~deploy_controller#001560C826430025000000000000186C#3754050000000003##com.sap.engine.services.tc~bl~deploy_controller#Administrator#6##CDDD890807A61000999C95DF763CCC95#cddd890807a61000999c95df763ccc95#cddd890807a61000999c95df763ccc95#0#Thread[RMI/IIOP Worker [4],5,Dedicated_Application_Thread]#Java##
ASJ.dpl_dc.001085 [ERROR CODE DPL.DC.3077] An error occurred while deploying the deployment item [com.izazi_auth_app].
; nested exception is: 
	com.sap.engine.services.dc.gd.DeliveryException: [ERROR CODE DPL.DC.3298] An error occurred during deployment of [com.izazi_auth_app]. Cannot deploy it. 
[EXCEPTION]
 [0]#1#com.sap.engine.services.dc.cm.deploy.DeploymentException: ASJ.dpl_dc.001085 [ERROR CODE DPL.DC.3077] An error occurred while deploying the deployment item [com.izazi_auth_app].
; nested exception is: 
	com.sap.engine.services.dc.gd.DeliveryException: [ERROR CODE DPL.DC.3298] An error occurred during deployment of [com.izazi_auth_app]. Cannot deploy it.
	at com.sap.engine.services.dc.cm.deploy.impl.OnlineDeployProcessor.performDelivery(OnlineDeployProcessor.java:188)
	at com.sap.engine.services.dc.cm.deploy.impl.BulkOnlineDeployProcessor.deploy(BulkOnlineDeployProcessor.java:57)
	at com.sap.engine.services.dc.cm.deploy.impl.AbstractDeployProcessor$DeployProcessorHelper.visit(AbstractDeployProcessor.java:229)
	at com.sap.engine.services.dc.cm.deploy.impl.DeploymentItemImpl.accept(DeploymentItemImpl.java:83)
	at com.sap.engine.services.dc.cm.deploy.impl.AbstractDeployProcessor.deploy(AbstractDeployProcessor.java:91)
	at com.sap.engine.services.dc.cm.deploy.impl.DeployThread.run(DeployThread.java:34)
	at com.sap.engine.core.thread.execution.Executable.run(Executable.java:109)
	at com.sap.engine.core.thread.execution.CentralExecutor$SingleThread.run(CentralExecutor.java:314)
Caused by: com.sap.engine.services.dc.gd.DeliveryException: [ERROR CODE DPL.DC.3298] An error occurred during deployment of [com.izazi_auth_app]. Cannot deploy it.
	at com.sap.engine.services.dc.gd.impl.ApplicationDeployer.deploy(ApplicationDeployer.java:118)
	at com.sap.engine.services.dc.gd.impl.InitialApplicationDeployer.performDeployment(InitialApplicationDeployer.java:108)
	at com.sap.engine.services.dc.gd.impl.InitialGenericDeliveryImpl.deploy(InitialGenericDeliveryImpl.java:51)
	at com.sap.engine.services.dc.cm.deploy.impl.OnlineDeployProcessor.performDelivery(OnlineDeployProcessor.java:163)
	... 7 more
Caused by: com.sap.engine.services.deploy.server.utils.DSRemoteException: [ERROR CODE DPL.DS.6193] Error while ; nested exception is: 
	com.sap.engine.services.deploy.container.DeploymentException: 
	at com.sap.engine.services.deploy.server.DeployServiceImpl.catchDeploymentExceptionWithDSRem(DeployServiceImpl.java:4714)
	at com.sap.engine.services.deploy.server.DeployServiceImpl.deploy(DeployServiceImpl.java:325)
	at com.sap.engine.services.dc.gd.impl.ApplicationDeployer.deploy(ApplicationDeployer.java:104)
	... 10 more
Caused by: com.sap.engine.services.deploy.container.DeploymentException: 
	at com.sap.engine.services.webservices.server.deploy.WebServicesDeployManager.deploy(WebServicesDeployManager.java:269)
	at com.sap.engine.services.deploy.server.utils.container.ContainerWrapper.deploy(ContainerWrapper.java:195)
	at com.sap.engine.services.deploy.server.application.DeploymentTransaction.makeComponents(DeploymentTransaction.java:526)
	at com.sap.engine.services.deploy.server.application.DeployUtilTransaction.commonBegin(DeployUtilTransaction.java:249)
	at com.sap.engine.services.deploy.server.application.DeploymentTransaction.begin(DeploymentTransaction.java:188)
	at com.sap.engine.services.deploy.server.application.ApplicationTransaction.makeAllPhasesOnOneServer(ApplicationTransaction.java:493)
	at com.sap.engine.services.deploy.server.application.ApplicationTransaction.makeAllPhases(ApplicationTransaction.java:544)
	at com.sap.engine.services.deploy.server.DeployServiceImpl.makeGlobalTransaction(DeployServiceImpl.java:2536)
	at com.sap.engine.services.deploy.server.DeployServiceImpl.deploy(DeployServiceImpl.java:378)
	at com.sap.engine.services.deploy.server.DeployServiceImpl.deploy(DeployServiceImpl.java:323)
	... 11 more
Caused by: com.sap.engine.interfaces.webservices.server.deploy.WSDeploymentException: Exception occured during web services deployment. Unable to extract web services deployment data for archive auth_ejb.jar, application com.izazi/auth_app.
	at com.sap.engine.services.webservices.server.deploy.ws.WSDeployProcess.extractWebServicesJ2EEEngineDescriptors(WSDeployProcess.java:293)
	at com.sap.engine.services.webservices.server.deploy.ws.WSDeployProcess.extractWebServicesJ2EEEngineDescriptors(WSDeployProcess.java:254)
	at com.sap.engine.services.webservices.server.deploy.ws.WSDeployProcess.init(WSDeployProcess.java:149)
	at com.sap.engine.services.webservices.server.deploy.WSBaseAbstractDProcess.makeProcess(WSBaseAbstractDProcess.java:308)
	at com.sap.engine.services.webservices.server.deploy.WebServicesDeployManager.deployWebServices(WebServicesDeployManager.java:1092)
	at com.sap.engine.services.webservices.server.deploy.WebServicesDeployManager.deploy(WebServicesDeployManager.java:257)
	... 20 more
Caused by: java.lang.NullPointerException
	at com.sap.engine.services.webservices.server.deploy.j2ee.ws.J2EE14Convertor.convert(J2EE14Convertor.java:624)
	at com.sap.engine.services.webservices.server.deploy.j2ee.ws.J2EE14Convertor.convert(J2EE14Convertor.java:482)
	at com.sap.engine.services.webservices.server.deploy.j2ee.ws.J2EE14Convertor.convertJ2EEModule(J2EE14Convertor.java:318)
	at com.sap.engine.services.webservices.server.deploy.j2ee.ws.J2EE14Convertor.convertJ2EEModule(J2EE14Convertor.java:241)
	at com.sap.engine.services.webservices.server.deploy.ws.WSDeployProcess.extractWebServicesJ2EEEngineDescriptors(WSDeployProcess.java:273)
	... 25 more

There is one ejb3 annotation-based web service in the ear. Here is its implementation:


@Stateless(name = "AuthBatchProcessBean")
//@TransactionAttribute(TransactionAttributeType.REQUIRED)
//@RolesAllowed( { "Batch Processing", "internal" })
//@RunAs("internal")
@WebService(name = "AuthBatchProcessEndpointInterface", 
		targetNamespace = "http://batchprocess.auth.service.izazi.com/")
//@SOAPBinding(style = SOAPBinding.Style.DOCUMENT, use = SOAPBinding.Use.LITERAL)
public class AuthBatchProcessBean implements IAuthBatchProcessLocal {

  public void processExpiries() {
//    getAuthenticationImpl().processExpiries();
  }

  private IAuthentication getAuthenticationImpl() {
    return ServiceLocator.getInstance().getAuthenticationImpl();
  }

}

As you can see, I've commented out some stuff in an attempt to get around the problem. I hope this sheds some light on the problem.

Regards,

Johan

Edited by: Johan Hoogenboezem on May 11, 2009 11:47 AM