I was told by ESRI: "The correct workflow to publish a feature service is by using actual feature class."
There is no way to use a join, view or query layer as a Feature Service. I was told on the phone this morning to try publishing it as a Map Service and retroactively enable Feature Access but I have not tried it yet.
Just to be clear for myself here are the limitations, using an ArcSDE database with SQL Server Express and Feature Service:
1. Join: not supported (but service publisher help suggests using a view instead)
2. View: not supported because it cannot be registered with the database because it does not have an objectid field. I do not understand why the CreateDatabaseView tool turns the objectid field of a view into a long integer, whereas the command line arcsde tools did not.
3. Query Layer: not supported because of a bug that was turned into a known limitation for which I do not have reference information. Also I think I understood correctly that using an SDE database is a limitation. The Evolution of Query Layers | Support Services Blog