Page 1 of 1

About Question enthuware.ocejws.v6.2.80 :

Posted: Mon Apr 14, 2014 11:34 am
by rkbansal83
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.

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

Posted: Mon Apr 14, 2014 3:16 pm
by fjwalraven
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

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

Posted: Tue Nov 18, 2014 8:37 pm
by blacksnow666
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.

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

Posted: Wed Nov 19, 2014 12:34 am
by fjwalraven
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

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

Posted: Wed Jul 01, 2015 5:23 am
by fabiolino
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()

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

Posted: Wed Jul 01, 2015 5:30 am
by fabiolino
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

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

Posted: Wed Jul 01, 2015 7:50 am
by fabiolino
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"));
	}

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

Posted: Wed Jul 01, 2015 8:58 am
by fjwalraven
Interesting: what EE-server are you using?

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

Posted: Wed Jul 01, 2015 9:10 am
by fabiolino
Tomcat 7 + apache cxf and ws is a Servlet Endpoints

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

Posted: Wed Jul 01, 2015 9:52 am
by fjwalraven
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.

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

Posted: Sun Nov 08, 2015 9:02 am
by ramy6_1
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.

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

Posted: Mon Nov 09, 2015 12:14 am
by fjwalraven
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

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

Posted: Mon Nov 09, 2015 2:56 am
by ramy6_1
Hello ,

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

Sorry for any inconvenience.

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

Posted: Wed Apr 06, 2016 4:56 pm
by vikyocajp71
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.

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

Posted: Thu Apr 07, 2016 1:28 pm
by fjwalraven
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

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

Posted: Sat Nov 05, 2016 2:31 pm
by johnlong
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, 

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

Posted: Thu Nov 10, 2016 10:40 pm
by johnlong
? ? ? ? ?

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

Posted: Fri Nov 11, 2016 1:22 pm
by fjwalraven
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

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

Posted: Mon Nov 14, 2016 1:24 am
by johnlong
How do you know that it was created by wsimport?

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

Posted: Mon Nov 14, 2016 2:55 am
by fjwalraven
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