About Question enthuware.ocejws.v6.2.80 :

Moderators: Site Manager, fjwalraven

Post Reply
rkbansal83
Posts: 33
Joined: Sat Nov 24, 2012 8:52 am
Contact:

About Question enthuware.ocejws.v6.2.80 :

Post by rkbansal83 » Mon Apr 14, 2014 11:34 am

what does QName object indicate ?
I see, its being used twice in the client (one with reference serviceName and other with reference portName)
I tried to search the web , but could not find a clear answer.

fjwalraven
Posts: 429
Joined: Tue Jul 24, 2012 2:43 am
Contact:

Re: About Question enthuware.ocejws.v6.2.80 :

Post by fjwalraven » Mon Apr 14, 2014 3:16 pm

QName represents a qualified name as defined in the XML specifications. The value of a QName contains a Namespace URI, local part and prefix.

Consider for instance the following QName:

Code: Select all

<ns2:getTableResponse xmlns:ns2="http://ws.notes.nl/">
Namespace URI = "http://ws.notes.nl/"
local part = getTableResponse
prefix = ns2

Regards,
Frits

blacksnow666
Posts: 13
Joined: Thu Apr 24, 2014 9:23 pm
Contact:

Re: About Question enthuware.ocejws.v6.2.80 :

Post by blacksnow666 » Tue Nov 18, 2014 8:37 pm

one of the wrong answers say "MathTablePort should be MathTableService."

Code: Select all

MathTableImplService service = new MathTableImplService();
looks ok to me

Code: Select all

MathTablePort port = service.getMathTableImplPort();
also looks ok to me

please explain..
thank you.

fjwalraven
Posts: 429
Joined: Tue Jul 24, 2012 2:43 am
Contact:

Re: About Question enthuware.ocejws.v6.2.80 :

Post by fjwalraven » Wed Nov 19, 2014 12:34 am

Hi

Code: Select all

MathTablePort port = service.getMathTableImplPort();
This is not correct as the Service Endpoint Interface (SEI) is MathTableService.

The correct code looks like:

Code: Select all

MathTableImplService service = new MathTableImplService();
MathTableService port = service.getMathTableImplPort(); 
Regards,
Frits

fabiolino
Posts: 25
Joined: Wed Jun 24, 2015 7:26 am
Contact:

Re: About Question enthuware.ocejws.v6.2.80 :

Post by fabiolino » Wed Jul 01, 2015 5:23 am

Hi, in code of fourth wrong answers:

Code: Select all

public class MathTableClient {
	public static void main(String[] args) {
		MathTableImplService service = new MathTableImplService();
		MathTableService port = (MathTableService) service.[u]getPort()[/u];
		try {
			SimpleMathTable table = port.getTable(new Integer(5));
		} catch (NegException e) {
		}
	}
}
you said:
There is no getPort()method without parameters.

1. but this is wrong because there is a method get...Port without parameters.
Is the name of the method is wrong because should be service.getMathTableImplPort()

fabiolino
Posts: 25
Joined: Wed Jun 24, 2015 7:26 am
Contact:

Re: About Question enthuware.ocejws.v6.2.80 :

Post by fabiolino » Wed Jul 01, 2015 5:30 am

fabiolino wrote:Hi, in code of fourth wrong answers:

Code: Select all

public class MathTableClient {
	public static void main(String[] args) {
		MathTableImplService service = new MathTableImplService();
		MathTableService port = (MathTableService) service.[u]getPort()[/u];
		try {
			SimpleMathTable table = port.getTable(new Integer(5));
		} catch (NegException e) {
		}
	}
}
you said:
There is no getPort()method without parameters.

1. but this is wrong because there is a method get...Port without parameters.
Is the name of the method is wrong because should be service.getMathTableImplPort()
Sorry, I double-checked your answer and you're right

fabiolino
Posts: 25
Joined: Wed Jun 24, 2015 7:26 am
Contact:

Re: About Question enthuware.ocejws.v6.2.80 :

Post by fabiolino » Wed Jul 01, 2015 7:50 am

In the code:

Code: Select all

public class MathTableClient {
	public static void main(String[] args) {
		MathTableImplService service = new MathTableImplService();
		QName portName = new QName("http://math.wsl/", "MathTableImplPort");
		service.addPort(portName, SOAPBinding.SOAP11HTTP_BINDING,
				"http://localhost:9999/math");
		MathTableService port = service.getPort(portName,
				MathTableService.class);
		try {
			SimpleMathTable table = port.getTable(new Integer(5));
		} catch (NegException e) {
		}
	}
}
you said: You cannot create (or add) a port with name "MathTableImplPort" because it already exists.
but i just run the my method below on tomcat 7 (all artifacts are generated) and there are no errors in the response

Code: Select all

	private static void call2() {
		service = new HelloWorld_Service();
		
		QName portName = new QName("http://cxf.fabio.com/", "HelloWorldImplPort");
		service.addPort(portName, SOAPBinding.SOAP11HTTP_BINDING, "http://localhost:8080/jaxws/services/jaxws");
		
		HelloWorld port = service.getPort(portName, HelloWorld.class);
		service.setHandlerResolver(new ClientHandlerResolver());
		System.out.println(port.sayHi("ciao"));
	}

fjwalraven
Posts: 429
Joined: Tue Jul 24, 2012 2:43 am
Contact:

Re: About Question enthuware.ocejws.v6.2.80 :

Post by fjwalraven » Wed Jul 01, 2015 8:58 am

Interesting: what EE-server are you using?

fabiolino
Posts: 25
Joined: Wed Jun 24, 2015 7:26 am
Contact:

Re: About Question enthuware.ocejws.v6.2.80 :

Post by fabiolino » Wed Jul 01, 2015 9:10 am

Tomcat 7 + apache cxf and ws is a Servlet Endpoints

fjwalraven
Posts: 429
Joined: Tue Jul 24, 2012 2:43 am
Contact:

Re: About Question enthuware.ocejws.v6.2.80 :

Post by fjwalraven » Wed Jul 01, 2015 9:52 am

Maybe apache cxf ignores the addPort() method if the port already exists.

The API says:
addPort
Creates a new port for the service. Ports created in this way contain no WSDL port type information and can only be used for creating Dispatch instances.
In other words: this method can only be used for a Dispatch client.

ramy6_1
Posts: 123
Joined: Wed Feb 12, 2014 2:44 am
Contact:

Re: About Question enthuware.ocejws.v6.2.80 :

Post by ramy6_1 » Sun Nov 08, 2015 9:02 am

Hello ,

You mentioned "There is no getPort()method without parameters."
But this is not correct , I have running code on netbeans with getPort without parameters.

Kindly explain.

fjwalraven
Posts: 429
Joined: Tue Jul 24, 2012 2:43 am
Contact:

Re: About Question enthuware.ocejws.v6.2.80 :

Post by fjwalraven » Mon Nov 09, 2015 12:14 am

I have running code on netbeans with getPort without parameters.
I wonder how that is possible. The specs clearly mention a getPort with a minimum of one parameter:

Code: Select all

T getPort(Class<T> sei)
T getPort(QName port, Class<T> sei)
T getPort(Class<T> sei, WebServiceFeature... features)
T getPort(QName port, Class<T> sei, WebServiceFeature... features)
T getPort(EndpointReference epr, Class<T> sei, WebServiceFeature... features)
Regards,
Frits

ramy6_1
Posts: 123
Joined: Wed Feb 12, 2014 2:44 am
Contact:

Re: About Question enthuware.ocejws.v6.2.80 :

Post by ramy6_1 » Mon Nov 09, 2015 2:56 am

Hello ,

You are right , the function I have is get****port();

Sorry for any inconvenience.

vikyocajp71
Posts: 2
Joined: Tue Feb 24, 2015 12:32 pm
Contact:

Re: About Question enthuware.ocejws.v6.2.80 :

Post by vikyocajp71 » Wed Apr 06, 2016 4:56 pm

Hello,
I think there's an error on the QName of the correct answer. A missing slash '/' at the end of the URI prevents the client from working correctly.
Please correct me if I am wrong. I did try of course.

fjwalraven
Posts: 429
Joined: Tue Jul 24, 2012 2:43 am
Contact:

Re: About Question enthuware.ocejws.v6.2.80 :

Post by fjwalraven » Thu Apr 07, 2016 1:28 pm

Hi !
think there's an error on the QName of the correct answer. A missing slash '/' at the end of the URI prevents the client from working correctly.
Good catch! I have fixed it.

Thanks for your feedback!

Regards,
Frits

johnlong
Posts: 185
Joined: Mon Jun 20, 2016 5:06 pm
Contact:

Re: About Question enthuware.ocejws.v6.2.80 :

Post by johnlong » Sat Nov 05, 2016 2:31 pm

You cannot create (or add) a port with name "MathTableImplPort" because it already exists.
Was MathTableImplPort created by this line of code?

Code: Select all

QName portName = new QName("http://math.wsl/", "MathTableImplPort");     service.addPort(portName, 

johnlong
Posts: 185
Joined: Mon Jun 20, 2016 5:06 pm
Contact:

Re: About Question enthuware.ocejws.v6.2.80 :

Post by johnlong » Thu Nov 10, 2016 10:40 pm

? ? ? ? ?

fjwalraven
Posts: 429
Joined: Tue Jul 24, 2012 2:43 am
Contact:

Re: About Question enthuware.ocejws.v6.2.80 :

Post by fjwalraven » Fri Nov 11, 2016 1:22 pm

Sorry, it seems I didn't get an e-mail when you replied to this question.
Was MathTableImplPort created by this line of code?
No, it was created by wsimport

Regards,
Frits

johnlong
Posts: 185
Joined: Mon Jun 20, 2016 5:06 pm
Contact:

Re: About Question enthuware.ocejws.v6.2.80 :

Post by johnlong » Mon Nov 14, 2016 1:24 am

How do you know that it was created by wsimport?

fjwalraven
Posts: 429
Joined: Tue Jul 24, 2012 2:43 am
Contact:

Re: About Question enthuware.ocejws.v6.2.80 :

Post by fjwalraven » Mon Nov 14, 2016 2:55 am

How do you know that it was created by wsimport?
The problem statement mentioned it "Assume that the artifacts are generated by wsimport." When you generate these artifacts you can see that the port is there (because that is what wsimport does for you)

Have you tried it yourself and verified the generated code?

Regards,
Frits

Post Reply

Who is online

Users browsing this forum: No registered users and 3 guests