Well, you're still using different endpoint names.
> <http:endpoint ...
> endpoint="BookServiceHttpPort"
> <http:endpoint ...
> endpoint="bookServiceConsumerEndpoint"
...
> targetEndpoint="bookServiceProviderEndpoint"
If I use the same name I get the parsing error and my SA won't start.
I don't have code for your particular example, but take a look at this:
Provider:
<jsr181:endpoint
endpoint="SensorDataServiceSOAPPort"
.../>
I think the difference is your example uses jsr181 and I'm using http.
Thanks
Michael